Box2Dの様々な機能について説明してきましたが,
コンタクトリスナを使うと,
サンプルについて
まずはサンプルのFlashをご覧ください。円を作るときのFlashに似ていますが,
動作についての説明
このFlashでは,
コンタクトリスナでは衝突の強さを検出できるので,
全ての物体同士の衝突を見ているので,
サンプルファイルの構成
このFlashを作るためのプログラムと画像は以下のとおりです。本当はこれらのファイルだけではコンパイルできず,
今回のサンプルコードは,
メインのクラスが書かれているのはKiraKira.
コンタクトリスナを使うときには,
star.
tweenerを使うには
もう1点,
コンタクトリスナの仕組み
サンプルプログラムの説明をする前に,
衝突を検出……というと,
メソッドをオーバーライドして衝突を検出する
Box2Dで衝突を検出するには,
public class ContactListener extends b2ContactListener {
public override function Add(point:b2ContactPoint):void {
// 衝突検出時の処理
}
}
このクラスの変数を作り,
var contactListener:ContactListener = new ContactListener();
world.SetListener(contactListener);
その他のオーバーライドできるメソッド
b2ContactListenerクラスには,
- Add
- 物体が衝突したときに呼び出されるメソッド
- Persist
- 物体が衝突してから離れるまで繰り返し呼び出されるメソッド
- Remove
- 物体が離れたときに呼び出されるメソッド
b2ContactPointについて
上で説明した3つのメソッドは,
プロパティは数が多いので,
- position
- 物体が接触している点の座標。サンプルではこの場所から星を飛ばしています
- normalForce
- 衝突の強さ。サンプルではこれに応じて星の数を決めています
- shape1,
shape2 - 接触している物体
(b2Shape型の変数)。これを参照すれば衝突した物体に応じて動作を変えることができます