Reputation: 37
Idea is to move from current camera position to a center of a mesh (It's a sphere and I want to be inside of it) when button is clicked.
This is the function with a tween, onUpdate is getting called, but it is instant instead of executed over time, what gives?
nextButton.onclick = function () {
const cameraCoords = { x: camera.position.x, y: camera.position.y, z: camera.position.z };
new TWEEN.Tween( cameraCoords )
.to( { x: mesh2.position.x, y: mesh2.position.y, z: mesh2.position.z }, 600)
.easing(TWEEN.Easing.Linear.None)
.onUpdate(function () {
camera.position.set(mesh2.position.x, mesh2.position.y, mesh2.position.z);
})
.start();
};
This is animate function where I call tween updates (in case something is wrong here).
function animate(time) {
requestAnimationFrame( animate );
controls.update();
TWEEN.update(time);
renderer.render( scene, camera );
}
animate();
Thanks!
Upvotes: 1
Views: 393
Reputation: 396
The problem is in the onUpdate
callback:
camera.position.set(mesh2.position.x, mesh2.position.y, mesh2.position.z);
You are always setting the end position, when you should be setting the current position which is in the cameraCoords
object:
camera.position.set(cameraCoords.x, cameraCoords.y, cameraCoords.z);
Upvotes: 3