В three.js У меня есть космический корабль в xyz, а id нравится летать к сетчатому объекту планеты в xyz.Враг Три.js Перейти к плееру
Я не могу для жизни меня понять это.
Нужно путешествовать по прямой, со скоростью, постоянной к планете.
В three.js У меня есть космический корабль в xyz, а id нравится летать к сетчатому объекту планеты в xyz.Враг Три.js Перейти к плееру
Я не могу для жизни меня понять это.
Нужно путешествовать по прямой, со скоростью, постоянной к планете.
updateFcts.push(function(delta, now){
if (shipArr[0]===undefined){
}else{
//create two vector objects
var xd = new THREE.Vector3(marsMesh.position.x,marsMesh.position.y,marsMesh.position.z);
var yd = new THREE.Vector3(shipArr[0].position.x,shipArr[0].position.y,shipArr[0].position.z);
//find the distance/hypotnuse to the xyz location
var dicks = shipArr[0].position.distanceTo(marsMesh.position);
var subvec = new THREE.Vector3();
subvec = subvec.subVectors(xd,yd);
//sub subtrac the 3 vectors.
var hypotenuse = dicks;
console.log(hypotenuse);
//1.5 stops it at 1.5 distance from the target planet
if(hypotenuse > 1.5){
//console.log(hypotenuse);
shipArr[0].position.y += .0001*200*(subvec.y/hypotenuse);
shipArr[0].position.x += .0001*200*(subvec.x/hypotenuse);
shipArr[0].position.z += .0001*200*(subvec.z/hypotenuse);
}else{
//within fire range
alert ("FIIIIIRE");
}
}
})
Я пробовал tween.js и был недоволен, поэтому я сам закодировал функцию.
Вы можете использовать https://github.com/sole/tween.js, который сфокусирован на этом.
Очень простой пример http://jsfiddle.net/qASPe (квадрат будет лететь к сфере после 5 секунд) с преимущественным этим кодом:
new TWEEN.Tween(ship.position)
.to(planet.position, 700) // destination, duration
.start();
Позже, вы можете захотеть использовать THREE.Curve, или другой механизм Пути, как " летающий»путь, как здесь http://jsfiddle.net/aevdJ/12
// create a path
var path = new THREE.SplineCurve3([
ship.position,
// some other points maybe? representing your landing/takeoff trajectory
planet.position
]);
new TWEEN.Tween({ distance:0 })
.to({ distance:1 }, 3000) // destination, duration
.onUpdate(function(){
var pathPosition = path.getPointAt(this.distance);
ship.position.set(pathPosition.x, pathPosition.y, pathPosition.z);
})
.start();
во всех случаях, не забудьте добавить эту строку в функции обновления
TWEEN.update();
Спасибо за это, я попробовал tween.js, но я не мог на всю жизнь понять, как приостановить отмену обновления или изменить анимацию. казалось, как только он был установлен, он был установлен в камне. –