我知道它破壞了物理規律,但是儘管通常有實際的理由來改變遊戲中身體的位置和方向,但大多數物理模擬庫贏得了「允許它,所以Bullet物理學也不會。在Bullet Physics中動態改變btRigidBody的位置/方向
所以,我會很感激任何建議或評論這一個。順便提一下,讓我們想起那些需要瞬間改變的遠距傳送技術。此外,更奇特的應用可能是慣性 - 例如,當用加速度計傾斜或旋轉便攜式設備時,使得物體相對於用戶看起來是靜態的。增強現實聽起來應該不俗。
我知道它破壞了物理規律,但是儘管通常有實際的理由來改變遊戲中身體的位置和方向,但大多數物理模擬庫贏得了「允許它,所以Bullet物理學也不會。在Bullet Physics中動態改變btRigidBody的位置/方向
所以,我會很感激任何建議或評論這一個。順便提一下,讓我們想起那些需要瞬間改變的遠距傳送技術。此外,更奇特的應用可能是慣性 - 例如,當用加速度計傾斜或旋轉便攜式設備時,使得物體相對於用戶看起來是靜態的。增強現實聽起來應該不俗。
假設我正確理解你的問題,我建議檢查BulletDynamics/Character/btCharacterControllerInterface.h
和/或BulletDynamics/Dynamics/btActionInterface.h
。在執行角色移動時,人們常常想要「彎曲規則」 - 例如實施傳送,可以使用btCharacterControllerInterface
中的void warp(const btVector3& origin)
方法。
就個人而言,我有最好的運氣直接從btActionInterface
繼承,保存一個指向btGhostObject
,我可以更新,並從那裏執行我的邏輯,但情況因人而異。
注意:如果您是只是想要更改位置和方向,您應該可以調用void setWorldTransform(const btTransform& worldTrans)
方法btRigidBody
。
setWorldTransform是否也改變了身體的位置和旋轉角度,還是隻改變了「皮膚」或圖形表示? – rraallvv
實際上,對setWorldTransform的調用應該只更新物理部分 - 更新圖形表示取決於您,雖然相當簡單。 (: –