1

Box2Dでcocos2dを使用してiOSゲームを作成していますが、コインなどの収集可能なオブジェクトとの衝突を最適に処理する方法を考えています。プレイヤーは動的なボディですが、コインやその他の収集品は(通常)静的なボディになります。プレーヤーとこれらのオブジェクトの間にコンタクトリスナーを作成するか、ゲームループ内の各コインを反復処理して(画面外のコインを除外するなど)、それらに対して循環衝突検出を実行する方がよいでしょうか?

後者の解決策は私には合理的に思えますが、私はbox2Dに不慣れであり、連絡先リスナーを使用する場合の長所/短所とパフォーマンスコストが何であるかわからないため、それがより良いかどうかはわかりません。

4

2 に答える 2

1

私は連絡先リスナーにその仕事をさせ、Box2Dがすでに行っていることと並行して衝突検出を実装しようとはしません。

bodyDef.userDataを使用して、CCPhysicsSpriteオブジェクト(または親オブジェクト)への週の参照を保存し、連絡先リスナーでアクセスできるようにすることができます。Box2Dドキュメントから:

ユーザーデータは無効なポインターです。これにより、アプリケーションオブジェクトをボディにリンクするためのフックが提供されます。すべてのボディユーザーデータに同じオブジェクトタイプを使用するように一貫している必要があります。

于 2013-02-15T11:49:17.243 に答える
0

コインがあなたの足を止めたくないので、おそらくセンサーを見たいと思うでしょう。

于 2013-02-02T15:47:58.070 に答える