2012-01-21 16 views
4

誰かがどのようにしてアンドロイドのbox2dを使用して衝突検知を動作させるか説明できますか?私はどのような方法でBBContactListenerを理解することができません。Box2dを使用した衝突検出(Android用)?

BBContactListener listener = new BBContactListener(); 
world = new BBWorld(gravity, doSleep); 
world.SetContactListener(listener); 

どのようにそのリスナーを使用しますか?私は自分自身を作り出すためにstandartを拡張する必要がありますか?

答えて

1

私はアンドロイドのためにbox2dを使用しませんでしたが、そのアイデアはそこに同じだと思います。連絡先処理メソッドを実装する必要があります。これがC++でやる方法です。

class ContactListener : public b2ContactListener 
{ 
public: 
    ContactListener(); 
    ~ContactListener(); 

    void BeginContact(b2Contact *contact) {...} 
    void EndContact(b2Contact *contact) {...} 
    void PreSolve (b2Contact *contact, const b2Manifold *oldManifold) {...} 
    void PostSolve (b2Contact *contact, const b2ContactImpulse *impulse) {...} 
}; 

それからちょうどこのクラスを渡すために、 `b2World」

+0

だから私は、リスナーを、私はリスナーにmyb2Worldプロパティを作成するために持っているよりも、メソッドを実装して、私のリスナーを作成する必要があり理解して活性化させると(myb2World.SetContactListener(この))。したがって、ビジュアルオブジェクトによるすべての操作(衝突、衝動など)は、これら4つの方法で実装されますか? – GeorgeBuron

+0

@GeorgeBuron:これらのメソッドは、衝突ごとに自動的にb2Worldによって呼び出されます。ただし、b2World :: Step関数の実行中に呼び出されるため、これらのメソッドで必要なものをすべて実行することはできません。したがって、この関数でボディを作成したり削除したりすることはできません。 – Andrew

+0

これらのメソッドはリフレクションなどを埋め込むためのものです。連絡先のオブジェクトはどこで削除すればよいですか? p.s.あなたは本当に情報がないので何も見つかりませんでした) – GeorgeBuron

関連する問題