2012-03-15 11 views
1

b2ContactListenerを拡張して、衝突の法線を見つけました。しかし、センサーと接触するたびに、法線は常に0,0です。身体の1つがセンサーの場合、どのようにして正常になるのですか?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

正常(と接触マニホールド内の何か)は、それらが重なったときに離れた2つのフィクスチャーをプッシュするために適用されるべき衝突応答の種類を計算するだけでよいです。センサには衝突応答がないため、この情報は必要ではなく、したがってそれらのために計算されません。

普通のコリジョンレスポンスがない通常の方法は、センサーを非センサーに戻すことです。プリソルブコールバックでは、そのフィクスチャを含むすべての連絡先に対してcontact-> SetEnabled(false)を実行します。

関連する問題