« PV3D と Box2D を組み合わせて使ってみた | メイン | MovieClipLoaderのイベント »

2008年2月13日

[as3] PV3D & Box2D & Maze の作り方

今日は、前回のエントリー(PV3D と Box2D を組み合わせて使ってみた)で作った迷路FLASHの作り方について簡単に解説します。


迷路を生成するためにMazeクラスを作成
Maze.as

まず迷路を生成するクラスを作ります。 このクラスはプロパティ内に"1"と"0"の配列で迷路の情報を作成します。 画像は出力結果です。 このクラスは「C言語による最新アルゴリズム事典」を参考にさせてもらいました。


PV3DとMazeを組み合わせる
Cubic.as

先ほど作成したMazeクラスで生成した迷路の情報を元に、PV3DのCubeを配置します。
このCubic.asはPV3Dのサンプルについている「Cube」を元に編集したものです。
あとでボールを転がすので、試しにココでSphereクラスも使ってみます。
サイコロ柄なのは特に意味は無いです。
初めて使うので「MaterialsList」の関係とかを見るために6面を違う柄にしたかっただけです。
今回裏面は最終的に見えなくするので、無駄な処理を省くために接続面と裏面を消しています。


Box2DとMazeを組み合わせる
Ball.as

Cubeと同様に作成した迷路情報を元に四角と丸を配置します。
PV3Dが「x,y,z」の3軸なのに対して、Box2Dは「x,y」の2軸なので、z軸に対する重力は今回無視して
マウスの方向(x,y)に重力の座標を変更しています。
m_world.m_gravity.x = mouseX - 640 / 2;
m_world.m_gravity.y = mouseY - 360 / 2;
このBallクラスもBox2Dについているサンプル「HelloWorld」をもとにしています。


上記2つをさらに組み合わせる
Document.as

先ほど作成した Ball クラスと Cubic クラスを組み合わせます。
このときBallクラスで使用したDisplayObject(Sprite)はもういらないので削除します。
Box2Dは位置情報を持っているので、この情報を PV3D に反映させます。
あとはマウス座標に合わせて程よく傾ければ、傾いてる方向に転がってるように見えます。

全ソースファイルのダウンロードはこちら。
20080208_Maze.zip

トラックバック(0)

このブログ記事を参照しているブログ一覧: PV3D & Box2D & Maze の作り方

このブログ記事に対するトラックバックURL: http://system.seyself.com/mt-tb.cgi/480

コメント(2)

お初になります。

Box2DとPapervision3Dの検索で来ました。
最近Box2DFlashAS3を少し触っているんですがとても参考になります!
プログラミングもまだまだ勉強中なので迷路の自動生成も
非常に参考になりました。

自分ももっとBox2Dの良い使い方を考えなければ...

michi :

こんにちは。はじめまして。
kazuki0413 さんのジェンガの方がよっぽどよく出来てて、良いなあと思いますよ。

今回作ったのはホントにサンプルをちょっと書き換えただけですし。
僕はBox2Dにしても、PV3Dにしても、これらを使って何が出来るのか、もう少し模索が必要です。

コメントする


画像の中に見える文字を入力してください。

しばらく時間が経過すると、システム内部と表示されている文字内容に食い違いが発生するようなので、
投稿する前にページをリロードすることをお勧めします。
リロードしてもフォームの内容は維持されます。