Box2DFlash v2.1a 調査5 : ピクセル移動
移動する物質を指定位置でぴったり停止させたい、という場合、任意で物質の移動速度を調節する必要があります。しかしどういう記述をすれば、ピクセル単位で物質を移動させることができるのか わからない状態でした。
検索してみたところ、丁度それらしき情報を発見。
適当ブログ:物体を投げる処理(box2d c++)
http://wt03.blog.fc2.com/blog-entry-42.html
上記サイトによると、以下の式から得られる値を b2Body.SerLinearVelocity に設定すればよいとのことです。
移動させたいピクセル数 * フレームレート / BOX2D_SCALE
例えば、フレームレート 30, BOX2D_SCALE の値を 10 として、横に 5 ピクセル移動させたい場合以下のような記述を行います。
var FRAME_RATE:uint = 30; var BOX2D_SCALE:uint = 10; body.SetLinearVelocity(new b2Vec2(5 * FRAME_RATE / BOX2D_SCALE, 0));
変数 body は操作したい物質の b2Body クラスインスタンスです。
上下左右キーで空中を 5 ピクセルずつ移動するだけのサンプル swf は以下となります。
http://www.dango-itimi.com/blog/swf/143/preloader.swf
このサンプルでは前回の記事に記述した、操作対象となる物質に重力を無視する処理を組み込んでいます。
[ FLASH ] [ tips ] [ update ] 投稿者 siratama : 2011年08月17日 10:00