b2BodyをTweenerでコントロール
予測がつかない動きもBox2Dの楽しいところなんだけど、ある程度コントロールしたいところも出てきたりする。
たぶんいろんなアプローチがあるんだと思うけど、ライブラリソース見てもいまいち理解できなかったので、b2Bodyのメソッド、SetXForm()を利用してTweenerで動かす方法を考えてみた。
b2Bodyを継承したmyBodyというオブジェクトを、現在地から右方向へ1(Box2Dの世界換算で)トゥイーンしたい、とした時
var nPotision:b2Vec2 = myBody.GetPosition(); myBody.WakeUP(); Tweener.addTween(nPotision, { x:nPotision+1, time:1, onUpdateParams:[myBody], onUpdate:function( targetBody:b2Body ){ targetBody.SetXForm(this, 0); });
とする。
Tweenerの部分を整理すると
ちなみにfor(){}で囲っても動いたので、複数のオブジェクトを一斉にトゥイーンすることもできる。