この記事のURL

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


FLASH tips update 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

トラックバック

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

コメント

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




[EDIT]