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);
}