我知道它违反了物理定律,但是尽管通常有实际原因可以立即改变游戏中物体的位置和方向,但大多数物理模拟库都不允许这样做,所以子弹物理也不会。
因此,我将不胜感激对此的任何建议或评论。
顺便说一下,瞬移浮现在脑海中,需要那些即时的变化。此外,一个更奇特的应用可能是惯性 - 例如,当使用加速度计倾斜或旋转便携式设备时,因此物体相对于用户而言似乎是静态的。 增强现实不应该听起来俗气。
假设我正确理解了您的问题,我建议您查看BulletDynamics/Character/btCharacterControllerInterface.h
和/或BulletDynamics/Dynamics/btActionInterface.h
。通常,人们希望在实现角色移动时"弯曲规则" - 例如,要实现瞬移,可以使用btCharacterControllerInterface
的void warp(const btVector3& origin)
方法。
就个人而言,我有最好的运气直接从btActionInterface
继承,存储一个指向我可以更新并从那里实现我的逻辑的btGhostObject
的指针,但是 YMMV。
注意:如果您只想更改位置和方向,您应该能够调用 void setWorldTransform(const btTransform& worldTrans)
方法进行btRigidBody
。