您可以毫无问题地从Three.js Orbit Controls切换到FirstPerson控件。但是当你从第一人称转到轨道时,显示器会陷入'mousedown'模式。
您需要做什么才能无缝地在First Person和Orbit控件之间来回切换?
带演示的jsBin
http://jsbin.com/jekebo/2/edit?html,js,output
这两个功能
function setControlsFirstPerson() {
camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.set( -150, 20, 0 );
controls = new THREE.FirstPersonControls( camera, renderer.domElement );
controls.lookSpeed = 0.05;
controls.movementSpeed = 50;
}
function setControlsOrbit() {
camera = new THREE.PerspectiveCamera( 40, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.set( 100, 100, 100 );
controls = new THREE.OrbitControls( camera, renderer.domElement );
}
任何帮助表示感谢。
答案 0 :(得分:1)
它无效,因为您要将第二个参数发送到OrbitControls。这出于某种原因似乎停止了终止事件被解雇。
controls = new THREE.OrbitControls( camera, renderer.domElement );
没有它,似乎按预期工作:
controls = new THREE.OrbitControls( camera );
我已经开始编辑你的jsbin,改变发送给两个控件的构造函数的参数。
http://jsbin.com/fabalomave/1/edit?js,output
我还更改了相机的创建和更改方式,以便每次更改所需的相机时都不会创建新的相机和控件实例,而只是存储引用并更改相机并控制全局{{1 }和camera
变量引用。