Mouse3Dではちゅねミクを動かそう。

2.ミクとレンの移動

まず、床部分をクリックした際に、

ActionScript

  1. new Number3D(viewport.interactiveSceneManager.mouse3D.x , viewport.interactiveSceneManager.mouse3D.y , viewport.interactiveSceneManager.mouse3D.z)

こんな感じでクリックしたポイントの座標をゲットする。
次に、ミクとレンの現在位置をNumber3Dとしてゲットし、配列に突っ込んで次の関数に渡す。

ActionScript

  1. private function moveModel(target:DisplayObject3D , points:Array):void {
  2.     var point:Number3D = points.shift() as Number3D;
  3.     var dx:Number =0;
  4.     var dz:Number = 0;
  5.     var rad:Number = 0;
  6.     var distance:Number = 0;
  7.    
  8.     if (target && point) {
  9.         dx = target.x - point.x;
  10.         dz= target.z - point.z;
  11.         rad = Math.atan2(dx , dz) * 180 / Math.PI;
  12.         distance = Math.sqrt(dx * dx + dz * dz);
  13.         target.rotationY = rad;
  14.         Tweener.addTween(target , { x:point.x , y:0 , z:point.z , time:distance / SPEED , transition:"easeincubic" , onComplete:function():void {
  15.                 moveModel(target , points);
  16.             }
  17.         } );
  18.     }
  19. }

これでうまくポイントを経由して動く。
今回は2点だが、関数の作り的に何個でも点を経由可能。
半熟英雄か伝説のオウガバトルみたいな異同イメージが実現できると思われる。
これを応用して、ミクとレンのチェスとかも出来るかもしれない。
問題点は、そんなに沢山の駒は重くて画面に入らないと言うコトだ。

タイトルとURLをコピーしました