在碰撞期间穿过墙壁的对象

时间:2011-08-25 21:35:54

标签: c++ openframeworks

我正在制作一款使用非常简单的碰撞检测的游戏。我没有使用2D盒子,因为它太过分了。基本上,它是Pong和fooseball的混合体。当球速度加快并且速度非常快时,它最终会穿过它应该碰撞的墙壁。代码以慢速和常规速度工作,但速度非常快。

这是我的代码:

pos.x是一个保持我球的x位置的向量。

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

我该怎么做才能改善这一点? 感谢

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

可以说,如果(pos.x - radius)== wallLeft,那么球已经接触到了墙,它的速度可以反转;如果你在循环中添加它作为附加测试有帮助吗?

答案 2 :(得分:0)

我唯一的想法是速度太高,以至于在将其添加到位置时会出现溢出,使得pos.x&gt; wallLeft + radius再次。