您可以简单地使用正弦和余弦来围绕一个点旋转任何对象。
您选择一个 targetPosition(或目标对象)并在运行时更新 camera.position 和 lookAt 方法。我添加z 而不是y 的原因是因为我假设您想要深度旋转它而不是垂直旋转它。在Math.cos 和Math.sin 内部有一个时间参考,您可以使用它来改变旋转速度。
var targetPosition = new THREE.Vector2(100, 100);
var radius = 50;
function update() {
requestAnimationFrame(update);
camera.position.x = targetPosition.x + Math.cos(Date.now()/1000) * radius;
camera.position.z = targetPosition.y + Math.sin(Date.now()/1000) * radius;
camera.lookAt(targetPosition);
}
如果您只是不想从位置 A 到位置 B 进行补间,那么当用户单击按钮(例如)时,您应该创建一个目标 THREE.Vector3 并将该向量补间到所需位置,然后update() 只需添加
var cameraPosition = new THREE.Vector3();
window.addEventListener('click', handleClick, false);
function handleClick(e) {
TweenMax.to(cameraPosition, 1, { x: 100, y: 100, z: 100 });
}
function update() {
requestAnimationFrame(update);
camera.position.copy(cameraPosition);
}