Измерение скорости объекта Tween

Я обработал объект (его свойство x) с помощью tweenlite, и я хочу измерить мгновенную скорость во время анимации в данный момент.

Я знаю, что могу создать массив, который будет постоянно записывать последние значения x в onUpdate, а затем принимать разницу. Но есть ли более эффективные способы сделать это?

2 ответа

Решение

Не понимаю, зачем вам скорость, но это просто математика. Вы уже знаете расстояние, которое объект пройдет, и время, необходимое для прибытия в пункт назначения. Так,

speedTimeUnit = distanceTraveled/timeNeededToArrive;

или если вам нужно знать скорость в кадрах

speedFramesUnit = distanceTraveled/(timeNeededToArrive*frameRate);

Конечно, это в случае, если время в секундах...

Нет, другого способа измерить нет.

В любом случае вам нужно знать расстояние между двумя точками и время перемещения, и если у вас есть анимация на временной шкале, единственный способ узнать эти параметры - это измерить ее. Если ваша анимация линейная, вы можете сохранить начальную позицию и метку времени, и в любой момент мгновенная скорость будет:

    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 после каждого измерения.

Другие вопросы по тегам