【问题标题】:btRigidBody objects behave strangely when colliding at slow speedsbtRigidBody 物体在低速碰撞时表现异常
【发布时间】:2012-10-10 09:29:20
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: ios collision-detection game-physics bulletphysics


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多