オブジェクト (その x プロパティ) をトゥイーンライトでトゥイーンしました。トゥイーン中の特定の瞬間の瞬間速度を測定したいと考えています。
onUpdate で最新の x 値を常に記録する配列を作成し、差を取ることができることはわかっています。しかし、これを行うより効率的な方法はありますか?
オブジェクト (その x プロパティ) をトゥイーンライトでトゥイーンしました。トゥイーン中の特定の瞬間の瞬間速度を測定したいと考えています。
onUpdate で最新の x 値を常に記録する配列を作成し、差を取ることができることはわかっています。しかし、これを行うより効率的な方法はありますか?
なぜ速度が必要なのか理解できませんが、単純な計算です。オブジェクトが移動する距離と、目的地に到着するのに必要な時間は既にわかっています。そう、
speedTimeUnit = distanceTraveled/timeNeededToArrive;
または、フレームの速度を知る必要がある場合
speedFramesUnit = distanceTraveled/(timeNeededToArrive*frameRate);
もちろん、これは時間が秒単位の場合です...
いいえ、それを測定する別の方法はありません。
とにかく、2 点間の距離と移動時間を知る必要があります。タイムラインにアニメーションがある場合、これらのパラメーターを知る唯一の方法はそれを測定することです。トゥイーンが線形の場合、初期位置とタイムスタンプを保存でき、いつでも瞬時速度は次のようになります。
var origPos:Point = new Point(obj.x, obj.y);
var origTimestamp:Number = getTimer();
var currentPos:Point = new Point();
currentPos.x = obj.x;
currentPos.y = obj.y;
var speed:Number = currentPos.subtract(origPos).length/(getTimer() - origTimestamp);
トゥイーンが痩せているかどうかわからない場合は、各測定後に交換origPos
してください。origTimestamp