2017-02-09 2 views
1

Я делаю игру, в которой объект перемещается к другим объектам.Three.JS TWEEN перемещает объект на другую скорость объекта

new TWEEN.Tween(object.position).to({ 
    x: Math.position = pointX, 
    z: Math.position.z = pointZ 
}).easing(TWEEN.Easing.Linear.None).start(); 

Проблема в том, что объект перемещается с разной скоростью в каждую точку, поскольку точки имеют разные позиции.

Как я могу настроить скорость моего объекта на точки всегда одинаково?

+1

Вы знаете расстояние, у вас есть желаемая скорость, поэтому время - это расстояние/скорость. Где и как вы устанавливаете продолжительность твинов? – prisoner849

+2

Продолжительность - второй параметр tween.to (объект, продолжительность) – Radio

ответ

2

В общем, это будет выглядеть следующим образом:

var speed = 5; // units a second, the speed we want 
var currentPoint = new THREE.Vector3(); // we will re-use it 


// this part is in a function of event listener of, for example, a button 
currentPoint.copy(cube.position); // cube is the object to move 
var distance = currentPoint.distanceTo(destinationPoint.position) 
var duration = (distance/speed) * 1000; // in milliseconds 
new TWEEN.Tween(cube.position) 
    .to(destinationPoint.position, duration) // destinationPoint is the object of destination 
    .start(); 

jsfiddle пример. Посмотрите на функцию tweening().

+0

Спасибо за помощь –

+1

Добро пожаловать) – prisoner849

Смежные вопросы