我正在使用PhysX 3.3.0。PhysX - 獲取控制器的速度
我的角色是一個膠囊控制器,我需要能夠檢索控制器的實際速度,這看起來很難完成。
我試過在現場主模擬之後檢索與控制器相關聯的actor的速度,但是這只是返回虛假值,很可能是由於控制器僅僅是罩下的運動學演員。
現在,我能想到的唯一方法就是自己跟蹤速度,但事情並非如此簡單。我可以很容易地跟蹤自己對速度的變化,例如通過運動輸入施加的速度。然而,只要控制器不與任何事物相沖突,這只是準確的。通過移動功能移動控制器後,控制器的速度可能會因與地板或牆壁碰撞而改變。移動功能會返回碰撞標誌,但它們只會告訴我是否存在與側面碰撞的地方,底部或頂部,但這不足以手動推導新的速度。
這似乎是一個相當大的疏忽,所以也許我只是在這裏錯過了一些東西。如果PhysX不提供這樣的功能,我該如何精確跟蹤控制器的速度?
//編輯
這是我多麼現場模擬後斂速度:
void ControllerPhysObj::UpdateVelocity()
{
physx::PxRigidDynamic *actor = m_controller->getActor();
physx::PxVec3 vel = actor->getLinearVelocity();
m_velocity.x = vel.x;
m_velocity.y = vel.y;
m_velocity.z = vel.z;
}
m_controller是PxCapsuleController。
發佈您試圖獲得速度的代碼 – LearnCocos2D 2014-08-31 07:11:00
沒有太多可以顯示的東西,我只是使用'getLinearVelocity',但無論如何我都添加了代碼。 – Silverlan 2014-08-31 07:42:26
返回的值是什麼?你怎麼知道他們是假的? – LearnCocos2D 2014-08-31 08:57:56