2012-03-15 26 views
1

我在擴大b2ContactListener以找出碰撞的法線。但是,每次與傳感器接觸時,法線始終爲0,0。如果其中一個機構是傳感器,我該如何得到正常的?在Box2d中查找傳感器的正常接觸2.1a

override public virtual function BeginContact(contact : b2Contact) : void 
{ 
    var normal : b2Vec = contact.GetFixtureA.GetBody().GetContactList().contact.GetManifold().m_localPlaneNormal; 

    // normal is always 0,0 if it is a sensor. 
} 

回答

2

正常(以及任何在接觸歧管其他人)只需要計算什麼樣的碰撞響應的,應適用於推開兩場比賽時,他們重疊。由於傳感器沒有任何碰撞響應,因此不需要此信息,因此不會爲其計算。

沒有通常的碰撞響應,你可以得到一個法線的一種方法是將你的夾具恢復爲非傳感器,並且在PreSolve回調中,對於涉及該夾具的每個接觸,執行contact-> SetEnabled(false)。