box2d的体速竟然非常高

时间:2014-09-06 19:27:57

标签: box2d velocity

我正在构建一个简单的2D游戏,其中蛇可以向玩家吐火球,他必须避免这些。玩家四处移动并且蛇是静止的,但它围绕其中心旋转以跟随玩家的移动。

在某些时候,蛇会吐出火球,这是一个动态的身体,附有CircleShape传感器夹具。 火球应该以每秒2个单位的速度线性移动。由于攻击方向总是不同,我根据旋转角度分别设置速度的x和y分量:

fireball_velocity.x = Snake.FIREBALL_VELOCITY * MathUtils.cos(angle);
fireball_velocity.y = Snake.FIREBALL_VELOCITY * MathUtils.sin(angle);

然后将得到的速度设置为新创建的火球体作为线速度:

body.setLinearVelocity(fireball_velocity);

之后火球体不受任何力或冲动的影响(重力比例设为0)

50%的时间(或者更多)这个工作得很好,但有时(也经常)火球速度非常高,如此之高,甚至可以通过玩家身体而不会被检测到!

我已经使用调试器检查了fireball_velocity.x和fireball_velocity.y - 它们总是在-2.00f和2.00f之间以及火球速度也变高的时候。因此,即使提供线性速度值总是很小,有时box2d引擎也会错误地处理...

我还试图让火球半径更大,以防万一它变小或计算,但没关系。

根据手册中的建议,Box2d坐标保持在0到10个单位之间。

什么可能导致这个问题?

0 个答案:

没有答案