我正在制作一款使用非常简单的碰撞检测的游戏。我没有使用2D盒子,因为它太过分了。基本上,它是Pong和fooseball的混合体。当球速度加快并且速度非常快时,它最终会穿过它应该碰撞的墙壁。代码以慢速和常规速度工作,但速度非常快。
这是我的代码:
pos.x是一个保持我球的x位置的向量。
if (pos.x - radius < wallLeft)
{
pos.x = wallLeft + radius;
vel.x *= -1;
}
我该怎么做才能改善这一点? 感谢
答案 0 :(得分:0)
尝试增加wallLeft一点,这样球的速度永远不会超过wallLeft,看来你的球低于0之后会出现故障(或者你有一些我不知道的代码),不熟悉框架或其余代码如何工作,但这是解决它的最简单方法。如果你不想这样做,那么如果球的x小于0,那么某个地方可能会有一些代码,并且你必须让它更宽松,或者如果球的x是小于-50,或类似的东西(玩这个数字直到它起作用)
答案 1 :(得分:0)
可以说,如果(pos.x - radius)== wallLeft,那么球已经接触到了墙,它的速度可以反转;如果你在循环中添加它作为附加测试有帮助吗?
答案 2 :(得分:0)
我唯一的想法是速度太高,以至于在将其添加到位置时会出现溢出,使得pos.x&gt; wallLeft + radius再次。