2011-01-19 29 views
0

私は40個のCCSpriteオブジェクトを使用したゲームを設計しています。私はそれらの間の衝突を検出する必要があります。私は2つのスプライト間の衝突を検出することができます。今、残りのすべてのオブジェクトに対して1つのオブジェクトをチェックするにはどうしたらいいですか? FORループを使用していますか?またはこれを行う他の方法がありますか?Cocos2Dの衝突検出

答えて

1

私は最初の反復ではforループを実装して、それが十分速いかどうかを確認するべきだと思います。

もしそうでなければ、あなたのゲームエリアを長方形に分割し、あなたのオブジェクトを長方形(複数の長方形に重なっているオブジェクトがすべてに属する)に配布することができます。その後、衝突を行うと、最初のオブジェクトが配置されている四角形のみをチェックできます。もちろん、これはあなたがそこにいるものに大きく依存します。すべてのオブジェクトがたくさん動き回ると、それほど熱い考えではないかもしれません。あなたはBOX2DについてBOX2Dやシマリス

を使用dob't

0

なぜこのlinkが役立ちます。

次のコードはCocos2Dの場合に役立ちます。あなたは次の行

shape-> collision_type = kCollisionTypeParticleを追加する必要が


cpSpaceAddCollisionHandler(space_、kCollisionTypeParticle、kCollisionTypeParticle、collisonDetect、NULL、NULL、NULL、self);ここで

collisonDetectは、我々はとして登録する必要があります方法です。

cpBool collisonDetect(cpArbiter * ARB、構造体cpSpace *空間、void *型データ) {
          *層=(*)データ。
          [layer collisonDetect:arb];
          return cpTrue;
}

今ここで、ここでは、コード

の残りの部分を処理します - (無効)collisonDetect:(cpArbiter *)ARB {

         のNSLog(@」 COLLISION DETECTED ");

}