我有一个包含用户可以使用TransformControls移动的对象的场景。不幸的是,当用户将TransformControls拖动到画布的边缘时,OrbitControls会使相机从其当前位置跳转。
我相信这是因为TransformControls阻止默认鼠标事件冒泡,但是当鼠标被拖向屏幕边缘时,TransformControls首先停止处理鼠标移动,然后OrbitControls开始处理它。我可以用以下代码来隔离这种情况:
this.orbitControls = new OrbitControls(this, canvas);
this.lastCameraAngle = this.rotation.toVector3();
this.orbitControls.addEventListener('change', (e) => {
if (this.lastCameraAngle) {
const angleDifference = this.rotation.toVector3().angleTo(this.lastCameraAngle);
if (angleDifference > 1) {
// Occurs when user drags TransformControls to edge of canvas
console.log('Error occurred!');
}
}
this.lastCameraAngle = this.rotation.toVector3();
});
问题是,我怎样才能真正解决问题呢?我非常喜欢不需要编辑ObjectControls.js或TransformControls.js
的解决方案