この記事のURL

http://www.dango-itimi.com/blog/archives/2011/001087.html


FLASH tips update Box2DFlash v2.1a ピンボール1

過去 AS2 で製作し中途で止まっていたピンボールゲームを、Box2DFlash v2.1a にて動作させてみることに。

「Flash オーサリング環境上で製作したシェイプデータを Box2DFlash の物体として再現するライブラリ」の精錬化と、Box2D を用いてのゲームプログラミングの練習の意味も兼ねての制作となります。

過去製作したピンボールゲームの背景データと、Flash オーサリング上で背景用グラフィックスシンボルを配置したイメージは以下となります。

まだまだお粗末ですが Box2D debug モードでの動作は以下となります。

 http://www.dango-itimi.com/blog/swf/145/0/preloader.swf

画面クリック後、左右キーでフリッパーを操作することが可能です。ゲーム中スペースキーを押すと PAUSE となります。どこかくぼみにボールがはまるとゲームは停止してしまいます。

PAUSE 機能を実装してみて、Box2DFlash v2.1a では内部で何か独自のスレッドを持ってはいないことが確認できました。b2World.Step メソッドを実行することで 1フレーム分の処理が実行されるような内容になっているようです。


背景グラフィックスや、ボールとフリッパーのグラフィックスを合わせたものが以下となります。

 http://www.dango-itimi.com/blog/swf/145/1/preloader.swf


b2RevoluteJointDef 制限角度注意点

フリッパーの動作は b2RevoluteJointDef クラスのモーター機能を利用しています。

 参考サイト)
 http://flashjp.com/apiindex.php
 http://d.hatena.ne.jp/matsu4512/20090110/1231585208

b2RevoluteJointDef を利用してみた所、b2RevoluteJointDef.lowerAngle, b2RevoluteJointDef.upperAngle の値を設定したとしても、その値 丁度には停止してくれない、という点に気づきました。制限値に近い角度になっている状態で更に大きなチカラを加えたり モーターを回したりすると、一瞬大きく角度がはみ出てしまいます。よって、制限角度を超えたらそれ以上にチカラを加えたりモーターを回したりはしないようにするための制御を別途行うようにしています。

[ FLASH ] [ tips ] [ update ] 投稿者 siratama : 2011年10月13日 16:56

トラックバック

http://www.dango-itimi.com/blog/mt-tb.cgi/1047

コメント

こんにちは。
私はスマートフォン用のAIRアプリで物理エンジンを利用したゲームを作ろうとしている者です。
ASに移植されている物理計算ライブラリを探していたら、この記事で紹介されているBox2DFlash 2.1aのほかに、
Box2d Flash Alchemy Port + World Construction Kit
(http://www.sideroller.com/wck/)
というライブラリを見つけました。
正確にベンチを測ったわけではありませんが、Alchemyを使っているだけあって、パッと見の体感的には、こちらのライブラリの方が高速に動いているような気がするのですが、Box2DFlash 2.1aを選択したのには何か特別な理由があるのでしょうか?

投稿者 s : 2012年04月27日 01:21

>> s さん

どうもはじめまして。
取り敢えず物理エンジンライブラリの勉強を、ということだったので
Box2DFlash 2.1a を選択した理由は特にないです。

モバイル向け AIR アプリを作成されるのであれば
高いパフォーマンスがでるものを選択されたほうがよいかと思われます。

投稿者 siratama : 2012年04月27日 02:16

以下コメントを書き込むだけでは、管理人には通知が行われません。通知を行いたい場合、管理人の書き込みに「返信」を押してコメントをしていただくか、あるいは Google+, Twitter へご連絡ください。




[EDIT]