Flutter 颤振-火焰引擎|碰撞:当物体速度/速度较高时,碰撞不发生';t触发器
我做了一些测试,我看到当一个物体有很高的速度时,碰撞不会触发 在Flame doc的注释()上: 请注意,内置碰撞检测系统不需要 两个点击框之间的碰撞,相互超越进入 当他们移动太快或更新太快时,可能会发生这种情况 使用较大的增量时间进行调用(例如,如果您的应用程序没有 在前景中)。如果您愿意,这种行为称为隧道 阅读更多关于它的信息。我很想看到有人谈论这件事 我们如何才能避免这种情况!有一种很好的方法可以解决这类问题 事情 我意识到一些其他的测试 如果修改角度,将触发碰撞。(我不知道为什么它不会掩盖这一点) 更新函数(用于修改Y值)如下所示:Flutter 颤振-火焰引擎|碰撞:当物体速度/速度较高时,碰撞不发生';t触发器,flutter,flame,Flutter,Flame,我做了一些测试,我看到当一个物体有很高的速度时,碰撞不会触发 在Flame doc的注释()上: 请注意,内置碰撞检测系统不需要 两个点击框之间的碰撞,相互超越进入 当他们移动太快或更新太快时,可能会发生这种情况 使用较大的增量时间进行调用(例如,如果您的应用程序没有 在前景中)。如果您愿意,这种行为称为隧道 阅读更多关于它的信息。我很想看到有人谈论这件事 我们如何才能避免这种情况!有一种很好的方法可以解决这类问题 事情 我意识到一些其他的测试 如果修改角度,将触发碰撞。(我不知道为什么它不会掩
@覆盖
无效更新(双dt){
超级更新(dt);
y=y+_*dt-_重力*dt*dt/2;
_速度+=_重力*dt;
角度=速度(速度);
}
例如:
在这个gif上,你可以看到立方体有一个形状(HitboxRectangle)和绿色的地板。
但对撞机不会触发。只有在我“跳”到hitbox时才会触发
另一方面,滞后的视觉/动画只是因为它是gif
编辑: 我意识到一些其他的测试 如果修改了角度,则更有可能触发碰撞。看起来它现在很管用。(我不知道为什么) 假设你有一个函数,在更新时根据你的真实当前角度返回一个角度,然后你添加一个随机数来添加当前角度的微小变化 角度随机化器非常小,甚至不可见。(至少在画布上)
。。。
var rng=(new Random().nextInt(4)-2)/1000;
返回角+rng;
我真的不喜欢那种奇怪的解决方案。。但它是有效的!
也许这有助于发现原因和更好的解决方案。rc9中有一个关于碰撞检测的错误,这在rc10(或我们今天发布的rc11)中应该可以正常工作。您的组件移动速度不够快,无法错过整个碰撞检查 请注意,在您的pubspec文件中,您不能指定
^1.0.0-rc10
,因为pub将rc10视为低于rc10,因此您必须明确地说1.0.0-rc10
(没有^
)
编辑:rc11现已发布,因此现在您可以再次使用^
dependencies:
...
flame: ^1.0.0-releasecandidate.11
你是用rc10跑的吗?我修复了一些关于碰撞检测的错误。这看起来不够快,不会引发碰撞。就是这样!它现在工作得很好!不再需要角度随机化器了哈哈^我不冒险,直接跳到1.0.0-releasecandidate.11:)