我正在扩展b2ContactListener
以找出碰撞的法线。但是,每次我与传感器接触时,法线始终为0,0。如果其中一个物体是传感器,我如何得到正常值?
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.
}
答案 0 :(得分:2)
正常(以及接触歧管中的任何其他东西)仅用于计算应当应用何种类型的碰撞响应以在两个夹具重叠时将两个夹具分开。由于传感器没有任何碰撞响应,因此不需要此信息,因此不会为它们计算。
如果没有通常的碰撞响应,你可以获得正常的一种方法是将你的灯具恢复为非传感器,而在PreSolve回调中,只需对涉及该灯具的每个触点进行联系 - > SetEnabled(false)。