我在鼠标点击事件中为THREE.OrbitControls
设置了一个新目标,效果很好。但是在相机平移到新位置后,我失去了与鼠标的所有交互。
我正在用工作代码更新这个问题。
我认为当我将相机z和目标z设置为相同值时,我打破了控件。
破碎的代码在这里: http://www.kreativperspektiv.com/pb2/chartlock.html
工作代码在这里: http://www.kreativperspektiv.com/pb2/chartcorrect.html
姆(500,200,4000,1000);
var xTarget=0;
var yTarget=0;
var zTarget=0;
var tweenDuration=0;
function panCam(xTarget,yTarget,zTarget,tweenDuration){
TWEEN.removeAll();
var camNewPosition= { x : xTarget, y : yTarget, z : zTarget};
var targetNewPos = {x : xTarget, y : yTarget, z : 0};
var camTween = new TWEEN.Tween(camera.position).to(camNewPosition, tweenDuration).easing(TWEEN.Easing.Quadratic.InOut).start();
var targetTween = new TWEEN.Tween(controls.target).to(targetNewPos, tweenDuration).easing(TWEEN.Easing.Quadratic.InOut).start();
}
答案 0 :(得分:3)
您无法像这样更新目标:
controls.target = newTarget;
这会打破你的控制 而是必须使用setter方法或复制方法设置目标:
controls.target.copy( newTarget );
controls.target.set( x, y, z ) // where x, y and z are the new values
如果您想使用TWEEN,请尝试这样:
new TWEEN.Tween(camera.position).to(newPosition, tweenDuration);
new TWEEN.Tween(controls.target).to(newTarget, tweenDuration);