Box2DFlashAS3(2.0.0)を使ってみる - その7(衝突判定編)

2008年5月21日 14:40
今回は、前回のエントリーまでで作った車のボディーと、前回説明は省いてたけど画面中央にいる障害物の衝突判定をメモ。
↓ここを参考にさせていただいた。


Flash OOP Japan | 続Flah OOP本 | 物理エンジンを使ったゲーム | あたり判定


b2Bodyオブジェクトにはm_contactListという、衝突している2つのオブジェクトを格納するプロパティが存在する。
まずは、車のボディー(bodyBody)のm_contactListから、衝突しているオブジェクトを取り出す処理を入れる。(m_contactListを取得するにはGetContactList()を使用する)


衝突するオブジェクトは、地面であったり壁であったりと場合により変わるので、それを判断する指標が必要になってくる。
その指標を、b2PolygonDefb2CircleDefで指定したグラフィックデータ(userData)のプロパティ「id」として設定する。(ここでは車のボディには「body」、障害物には「obstacle」というidを指定)
で、上の方で取得したm_contactList内のオブジェクト、「obj1」と「obj2」のuserDataidがそれぞれ、「body」と「obstacle」だったら衝突時のアクションを起こすという流れになる。

あとここでつまづいたのが、「idだけで判定しようとするとオブジェクトの矩形で判定をしてしまう」ということ。
ここでb2ContanctGetManifoldCount()を調べる。
GetManifoldCount()は「0」か「1」の数字が取得できて、「"0"の時は矩形で衝突している」、「"1"の時はオブジェクトの形で衝突している」事を表しているみたい。
↓それをコードに組み込むとこんな感じ。

↓今回は衝突時に右上のボックスが「TRUE」、非衝突時が「FLASE」の文字を表示する様にしてみた。
This site requires flash player 9 or later.Thank you.


ソース

とりあえず今回までの事が理解出来れば簡単なゲームは作れそうな気がする。
でも、まだ探ってない部分が沢山あるから、まだまだ勉強しなくては。
prev  |  next


0 trackbacks

blogs refer to this article: Box2DFlashAS3(2.0.0)を使ってみる - その7(衝突判定編)

trackback URL: http://www.at-sonic.com/mt/mt-tb.cgi/86

leave comment