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
こんにちは。
私はスマートフォン用の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