2012-11-21 84 views
4

我知道它破坏了物理规律,但是尽管通常有实际的理由来改变游戏中身体的位置和方向,但大多数物理模拟库赢得了“允许它,所以Bullet物理学也不会。在Bullet Physics中动态改变btRigidBody的位置/方向

所以,我会很感激任何建议或评论这一个。顺便提一下,让我们想起那些需要瞬间改变的远距传送技术。此外,更奇特的应用可能是惯性 - 例如,当用加速度计倾斜或旋转便携式设备时,使得物体相对于用户看起来是静态的。增强现实听起来应该不俗。

回答

2

假设我正确理解你的问题,我建议检查BulletDynamics/Character/btCharacterControllerInterface.h和/或BulletDynamics/Dynamics/btActionInterface.h。在执行角色移动时,人们常常想要“弯曲规则” - 例如实施传送,可以使用btCharacterControllerInterface中的void warp(const btVector3& origin)方法。

就个人而言,我有最好的运气直接从btActionInterface继承,保存一个指向btGhostObject,我可以更新,并从那里执行我的逻辑,但情况因人而异。

注意:如果您是只是想要更改位置和方向,您应该可以调用void setWorldTransform(const btTransform& worldTrans)方法btRigidBody

+0

setWorldTransform是否也改变了身体的位置和旋转角度,还是只改变了“皮肤”或图形表示? – rraallvv

+1

实际上,对setWorldTransform的调用应该只更新物理部分 - 更新图形表示取决于您,虽然相当简单。 (: –