在子弹物理中即时更改 btRigidBody 的位置/方向



我知道它违反了物理定律,但是尽管通常有实际原因可以立即改变游戏中物体的位置和方向,但大多数物理模拟库都不允许这样做,所以子弹物理也不会。

因此,我将不胜感激对此的任何建议或评论。

顺便说一下,瞬移浮现在脑海中,需要那些即时的变化。此外,一个更奇特的应用可能是惯性 - 例如,当使用加速度计倾斜或旋转便携式设备时,因此物体相对于用户而言似乎是静态的。 增强现实不应该听起来俗气。

假设我正确理解了您的问题,我建议您查看BulletDynamics/Character/btCharacterControllerInterface.h和/或BulletDynamics/Dynamics/btActionInterface.h。通常,人们希望在实现角色移动时"弯曲规则" - 例如,要实现瞬移,可以使用btCharacterControllerInterfacevoid warp(const btVector3& origin)方法。

就个人而言,我有最好的运气直接从btActionInterface继承,存储一个指向我可以更新并从那里实现我的逻辑的btGhostObject的指针,但是 YMMV。

注意:如果您只想更改位置和方向,您应该能够调用 void setWorldTransform(const btTransform& worldTrans) 方法进行btRigidBody

最新更新