2012-03-15 25 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)。