アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

Box2DFlashAS3を使ってゲームっぽいものを作ってみる

こんばんは。松田です。
今回は以前ちょっとだけいじってみたActionScript用2D物理エンジンBox2DFlashAS3を使って簡単なゲームを作ってみたいと思います。

前回のエントリーはこちら

今回は前回いじったものをちょっとずつ直しながら、ゲームっぽく仕上げてみたいと思います。

ゲームセンターにあるなつかしのコインゲームをつくってみます。
コインを入れると上からコインがカタカタと落ちて来て、下のほうにある枠に入ります。
横一列に並ぶといっぱいコインがもらえ、同じマスに2つコインが入ると全部ボッシューとなります。
高校時代に近くのゲーセンに行くと、最初にこのゲームをやって所持コインを増やしてから他のゲームに回ってました。なついです。
参考URLでも出せれば説明しやすいのですが、正式名称がわからないのでググれませんでした。あれってなんてゲームなんですかねー。


さて、今回作るものは以下のような感じです。


1.コインの初期方向を決める左右に揺れて動く棒
2.パチンコのピンのような障害物となるちっちゃいbox
3.最終的にコインが収まる枠(枠の中にコインが2枚たまると床部分が一瞬消えるようにする)



2は単純にboxをたくさん配置するだけなので特に説明不要です。
3も単純ですが、枠の床部分を消すために、 world.DestoryBody(b2Body) を使用して床のboxを削除する必要があります。(この削除方法がわかるまで苦労しました・・・)

1のようなオブジェクトを作るには、自動的に動くモーター機能のついた、回転ジョイント(Revolute Joint)を使う必要があります。
回転ジョイントのおおまかな使い方は以下の通りです。


・動くboxを作成
・動きの支点となるちっちゃいboxを作成
・ジョイントの設定をするb2RevoluteJointDefを作成し、モーターの速度、ジョイントに使用する上記二つのオブジェクトを指定する
・world.CreateJoint(def)でジョイントを設置


他のコインが2枚重なった判定やその他のもろもろの処理はものすっごく汚い判定になってしまったので説明は省きます。
ソースコードはここ

別画面で開く
「投入」ボタンを押すとコインを落とします。
下に9つの枠がありますが、コインが隣同士に並ぶと払い戻し金が増えます。
2枚並ぶと4枚払い戻し、3枚並ぶと8枚、4枚並ぶと16枚・・・。
ただし、同じ枠に2枚コインが入ってしまうと全て没収されます。
そろそろ危ないな・・・と思ったタイミングで「払戻」ボタンを押しましょう。

いろいろと不具合が残りまくりですがそろそろ眠気がピークに達してきたので続きはそのうち・・・。

Box2Dはマニュアルがほとんど見当たらないので、目的の処理を行う方法を探すまでがなかなか大変ですね。

iPhoneでBox2D

こんにちは、中川です。

前回の記事で、matsudaさんが、
Box2DFlashAS3を紹介していましが、このライブラリにはiPhone版もあるようなので、
ちょっとさわってみることにしました。

    

まず、iPhoneで使用する為に、trunk版のソースからファイルを持ってくることにします。
http://box2d.svn.sourceforge.net/viewvc/box2d/trunk/から、「Download GNU tarball」をダウンロードして、解凍します。

そして、iPhone用には、


Build/iPhone/Box2D/Box2D.xcodeproj

を実行して、「ビルドして進行」を行います。

これで、iPhoneシミュレータが起動し、40種類くらいのサンプルを試すことができます。
※サンプルアプリでは、ダブルクリックで詳細から一覧に戻ることができます。

   

   

何か簡単なものでも自分で作ってみようと思ったのですが、
今のところまだまだ理解不足でなかなか大変なので、
また、次回にでも何か試してみたいと思います。。。

Box2DFlashAS3を使ってFlash上で物理演算を行う

こんちは。松田です。
今日はそのうち試してみようと思いながらずっと放置してたBox2DFlashAS3を、今更ですがいじってみました。Box2Dはもともとc++用の物理演算ライブラリですが、それをFlash用にActionScriptで作られたのがBox2DFlashAS3です。

今回は以下の記事を参考にして勉強していきました。
http://gihyo.jp/dev/feature/01/box2d/

上記の記事のコードを最新版2.0.2のBox2Dを使用して試そうとすると、CreateStaticBody/CreateDynamicBodyの部分でエラーが出てしまうため、今回は記事と同じ2.0.0を使用してます。
過去バージョンも含めてBox2DFlashは以下からダウンロードできます。
http://sourceforge.net/project/showfiles.php?group_id=210232&package_id=252417

自分はFlexBuilder3を使って作成してるのですが、以下はその場合の初期設定方法です。


・上記URLからBox2DFlashAS3をダウンロードし解凍。
・FlexBuilderメニューの「ファイル」→「新規」→「ActionScriptプロジェクト」
・適当なプロジェクト名を指定してプロジェクトを作成。
・Flexナビゲータ内の生成したプロジェクト以下のsrcディレクトリ以下に解凍したファイルを全部つっこむ
・その中のMain.asを右クリックして「デフォルトのアプリケーションに設定」
・Ctrl+F11で実行

これでFlexBuilderから下のBox2Dのサンプルが実行できます。
(んでも自分の環境で生成するとピクリとも動きませんでした。。。なぜ・・・。)

本来のカッコイイサンプルはこちら


そして今回は勉強しながらドミノ倒しっぽいものを作ってみました。
ほんとはもっといろいろ仕込んでピタゴラスイッチ的なものを作りたかったんですが、まだまだ勉強が追いつかなかったので今回はこの辺で終了ということで・・・。

ソースコードここをクリック

このライブラリを使う用途がゲーム意外に思いつかないので、次の機会があればもうちょっとゲームっぽいモノを作ってみたいと思います。