2012-01-24 5 views
0

私はいつもこのように、コンタクトリスナーを使用します。コンタクトリスナー、誰が誰にタッチ?

b2Body *bodyA=contact.fixtureA->GetBody(); 
b2Body *bodyB=contact.fixtureB->GetBody(); 
. 
. 
CCSprite *actora = (CCSprite*)bodyA->GetUserData(); 
CCSprite *actorb = (CCSprite*)bodyB->GetUserData(); 
. 
. 
if ([actora tag] == 6 && ([actorb tag]== 4 || [actorb tag]== 5) ) // question !! 
//do stuff here 

今私は私の自己は常にactora、誰bが誰であるかを推測してみてください見つけます。 は、ある身体が飛んでいて、別の身体に当たっていると言うことができます。ときどき打たれた身体はaであり、他方はbであり、逆も同様である。

私はすべての条件をチェックしたくないし、それを知るアルゴリズムを知りたがっています。 私はスクリーンの最初のボディにa(最初に定義されたスプライト)が得られると考えていました。 それが間違っていると分かりました。:)

だから、どのように私は/ bの誰が知っていますか? (ランダムですか?)

ありがとうございます。

答えて

1

space内のすべてのbodyは、リンクリストを介してリンクされていて、必要な要素を取得するには、リストを移動しなければならない、それは我々がリストを移動しなくても任意の要素を選択することができ、それを通してarrayようではありませんを参照してください。

私たちの場合、これはリンクされたリストであり、リンクパスを経由しなければならないため、最初に取得するボディがわからないので、両方の条件を調べる必要があります。他の方法でそれを見つけることはできません。

ランダムに見えます:-)

すべてがリンクリストです。

ありがとうございました

+0

があなたを手に入れました。しかし、リスト上を移動するときに何らかのルーチンがあることは確かです。たとえば、最初に作成された場所が常に最初に呼び出されたことがあります。誰かが書いたそのクラスについて考えてみると、ある条件で誰が最初に呼び出されるのかを知るルールがあると確信しています。すでにそれが証明されています。 – Curnelious

関連する問題