LoginSignup
0
0

More than 5 years have passed since last update.

AS3: カメラの注視点をアニメーションさせるとき、現在地と目標との角度差によってモーション時間を長くする

Last updated at Posted at 2013-04-25

Utility


/**
 * 2つのベクトルの内積を返します
 * 用途: カメラの目標注視点と現在の注視点の離れている割合 
 * @param v0
 * @param v1
 * @return 
 * 
 */
private function getDotProduct(v0:Vector3D, v1:Vector3D):Number
{   
    var _v0:Vector3D = v0.clone();
    _v0.normalize();
    var _v1:Vector3D = v1.clone();
    _v1.normalize();
    return _v0.dotProduct(_v1);
}

使い方

カメラの注視点をトゥイーンさせるとき、目標注視点との角度差によってトゥイーン時間を長くしたい

// 目標注視点
var lookAt:Vector3D = new Vector3D(0,0,2000);

// 現在の注視点
// lookAtObject.position

var dot:Number = getDotProduct(lookAt, lookAtObject.position);  // -1~1

// 離れているほど時間を長くする
var sec:Number = -(dot-1)/2 + 0.5; // 0.5~1.5

// 例:Tween24で動かすと
var moveTween:Tween24 = Tween24.tween(lookAtObject, sec, ease).xyz(lookAt.x, lookAt.y, lookAt.z)
moveTween.onUpdate(onUpdate);
moveTween.play();

private function onUpdate():void
{
    camera3D.lookAt(lookAtObject.position);
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0