Mouse3Dではちゅねミクを動かそう。
2.ミクとレンの移動
まず、床部分をクリックした際に、
new Number3D(viewport.interactiveSceneManager.mouse3D.x , viewport.interactiveSceneManager.mouse3D.y , viewport.interactiveSceneManager.mouse3D.z)
こんな感じでクリックしたポイントの座標をゲットする。
次に、ミクとレンの現在位置をNumber3Dとしてゲットし、配列に突っ込んで次の関数に渡す。
private function moveModel(target
isplayObject3D , points:Array):void {
var point:Number3D = points.shift() as Number3D;
var dx:Number =0;
var dz:Number = 0;
var rad:Number = 0;
var distance:Number = 0;
if (target && point) {
dx = target.x - point.x;
dz= target.z - point.z;
rad = Math.atan2(dx , dz) * 180 / Math.PI;
distance = Math.sqrt(dx * dx + dz * dz);
target.rotationY = rad;
Tweener.addTween(target , { x:point.x , y:0 , z:point.z , time:distance / SPEED , transition:"easeincubic" , onComplete:function():void {
moveModel(target , points);
}
} );
}
}
var point:Number3D = points.shift() as Number3D;
var dx:Number =0;
var dz:Number = 0;
var rad:Number = 0;
var distance:Number = 0;
if (target && point) {
dx = target.x - point.x;
dz= target.z - point.z;
rad = Math.atan2(dx , dz) * 180 / Math.PI;
distance = Math.sqrt(dx * dx + dz * dz);
target.rotationY = rad;
Tweener.addTween(target , { x:point.x , y:0 , z:point.z , time:distance / SPEED , transition:"easeincubic" , onComplete:function():void {
moveModel(target , points);
}
} );
}
}
これでうまくポイントを経由して動く。
今回は2点だが、関数の作り的に何個でも点を経由可能。
半熟英雄か伝説のオウガバトルみたいな異同イメージが実現できると思われる。
これを応用して、ミクとレンのチェスとかも出来るかもしれない。
問題点は、そんなに沢山の駒は重くて画面に入らないと言うコトだ。
カテゴリ:ActionScript | Papervision3D



