2012-06-04 2 views
8

私はbox2dwebを使用します。私はゲームを開発しようとしています。ある時点で、「サークル」と「ボックス」の接点を見つける必要があります。私が知っていることは、b2ContactListenerを使って行うことができるということだけです。ポストソルブイベントを使用してb2ContactListenerを実装することにより、連絡先データを受け取ることができます。助けてください!Box2dweb - 衝突の接点

+1

:http://www.iforce2d.net/b2dtut/collision-anatomy – iforce2d

答えて

16

あなたはb2ContactListenerとにフックすることができ、様々なイベントがある正しい軌道に乗っている:

var b2Listener = Box2D.Dynamics.b2ContactListener; 

//Add listeners for contact 
var listener = new b2Listener; 

listener.BeginContact = function(contact) { 
    //console.log(contact.GetFixtureA().GetBody().GetUserData()); 
} 

listener.EndContact = function(contact) { 
    // console.log(contact.GetFixtureA().GetBody().GetUserData()); 
} 

listener.PostSolve = function(contact, impulse) { 
    if (contact.GetFixtureA().GetBody().GetUserData() == 'ball' || contact.GetFixtureB().GetBody().GetUserData() == 'ball') { 
     var impulse = impulse.normalImpulses[0]; 
     if (impulse < 0.2) return; //threshold ignore small impacts 
     world.ball.impulse = impulse > 0.6 ? 0.5 : impulse; 
     console.log(world.ball.impulse); 
    } 
} 

listener.PreSolve = function(contact, oldManifold) { 
    // PreSolve 
} 

this.world.SetContactListener(listener); 

だけpostSolveコードを削除し、適切なイベントにフックを行うために必要なものに依存するが。

セス・ラッドには、彼のブログで衝突/反応についての素晴らしい記事がいくつかあります。これが私がこれらのビットを拾い集めて、完全な信用が彼に渡るところです。

こちらがお役に立てば幸いです。これは役立つかもしれない

おかげで、 ゲイリー

+0

感謝の男。私は今も正確な接触点を得ることができます。 – Shekhar

+0

私はそれにブログを書いた。あなたがしたい場合はそれをチェックアウトすることができます。 http://thenightowl.xp3.biz/ – Shekhar

+0

最後に! JavscriptのCollisionHandlerの説明 –