1

Box2d を使用して、自分の世界を自分のシーンで動作させています。基本的に、いくつかのボールが跳ね返り、すべてがダンディです。

ただし、ボールをドラッグ アンド ドロップする機能を追加したいと考えています。これは、Cocos2D の静的スプライトで既に実現できています。Box2D では、レイヤー ファイルにコードを保持するのではなく、CCSprite サブクラス (すべてのタッチ ジェスチャなど) に移動したいと考えています。

これは、CCSprite サブクラスと Layer ワールドの間で位置を通信する必要があることを意味します。これを行うにはどうすればよいですか?ありがとう

TLDR: オブジェクト ロジックをレイヤ ファイルから外部ファイルにどのように分離しますか?

4

1 に答える 1

1

やりたいことを実現する方法はたくさんあります。私はこのようにしました:私のゲームでは、NSObjectのサブクラスであるgameControllerがあります。その中にinitメソッド、私はより多くのコントローラーを作成しています: 1 つ目 - Box2d オブジェクトを表示するため、2 つ目 - コントロールを表示するため。私のオブジェクトのいずれかが任意のイベント (たとえば、2 つの特定の b2Bodies 間の衝突) について別のオブジェクトに通知する必要がある場合、それは (ポインターを介して) そのことを所有者コントローラーに通知し、親コントローラーでこのイベントを発生させます。親とそのすべての子コントローラーなど。例: ノードをタップしています。タップ、ドラッグなどのすべてのロジックは、コントローラー クラスにあります。次に、このノードを制御するコントローラーがイベントを発生させ、他のすべてのコントローラーがそれを認識しているため、何を実行するか、または何も実行しないかを選択できます。この場合、私の box2dController はこのメッセージを受け取り、b2Bodies を作成/移動します。

于 2012-05-24T08:14:20.153 に答える