2012-11-21 32 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的調用應該只更新物理部分 - 更新圖形表示取決於您,雖然相當簡單。 (: –