1

我正在尝试在我的 iOS 游戏中使用 Bullet Physics。该引擎似乎已正确编译,因为演示工作正常。

在我的游戏中,我有玩家的船和一些敌船。它们被定义为 btRigidBody 对象和 btCollisionObjects,我使用 btSphereShapes 进行碰撞。

在“快”的速度下,碰撞似乎是明智的——事情发生了碰撞,没有什么事情会变得“奇怪”。如果速度非常慢并且玩家的船碰到了一个不动的物体,碰撞就会发生,但是玩家的船在接下来的几帧中以难以置信的速度移动,并且看起来距离碰撞的地方很远 - 完全不成比例它在撞击前的移动速度。

为了移动这些东西,我每帧都使用 setLinearVelocity(),勾选物理引擎,然后使用 getMotionState() 更新我拥有的渲染代码。

部分问题可能是我不太了解如何设置正确的质量或用于任何事情的最佳速度。我主要是坚持数字,看看会发生什么。

我应该以这种方式使用 Bullet,是否有任何确定物体质量的准则?(我是否正确地假设在碰撞中较重的物体会迫使较轻的物体移动更多)

4

1 回答 1

0

我还不是子弹方面的专家,但我不会使用setLinearVelocity. 这仅适用于初始状态,一旦进入世界,如果您想朝着正确的方向推动某件事,就给它一个冲动。这就像被一个看不见的物体击中一样,因此与其他碰撞完全兼容。每帧设置速度将完全覆盖物理引擎的计算。

我注意到,当两个物体重叠时,它们相互排斥的力与它们重叠的程度有关。我认为您的 setVelocity 方法导致对象重叠,然后物理引擎最终以不希望的方式解决了这个问题。

我正在制作一个太空船游戏,我会产生抵消当前运动方向的冲动,只要飞船尚未以我选择的最大速度移动,就会产生将其向新方向移动的冲动。

于 2012-10-20T08:36:03.327 回答