1

我正在制作一个使用非常简单的碰撞检测的游戏。我没有使用box 2D,因为它是一种矫枉过正。基本上,它是乒乓球和桌上足球的混合体。当球获得速度并具有非常高的速度时,它最终会穿过它应该碰撞的墙壁。该代码适用于慢速和常规速度,但不适用于非常快的运动。

这是我的代码片段:

pos.x 是一个向量,它保存我的球的 x 位置。

if (pos.x - radius < wallLeft)
{
        pos.x = wallLeft + radius;
        vel.x *= -1;
}

我能做些什么来改善这一点?谢谢

4

3 回答 3

1

尝试增加 wallLeft 一点,使球的速度永远不会大于 wallLeft,似乎在你的球低于 0 后它会出现故障(或者你有一些我不知道的代码),不熟悉框架或其余代码如何工作,但这是解决它的最简单方法。如果你不想那样做,如果球的 x 小于 0,可能有一个代码在某处做某事,你必须让它更宽松一点,也许这样如果球的 x 是小于-50,或类似的东西(玩弄这个数字直到它起作用)

于 2011-08-25T21:46:50.943 回答
0

可以说如果 (pos.x - radius) == wallLeft 那么球已经接触到墙壁并且它的速度可以反转;如果您将此作为循环中的附加测试添加,是否有帮助?

于 2011-08-25T21:59:37.613 回答
0

我唯一的想法是速度如此之高,以至于在将其添加到位置时会溢出,从而再次使 pos.x > wallLeft + radius 。

于 2011-08-25T22:07:51.447 回答