我使用@react-three/fiber,实现了第一人称控件(WASD和光标键),并添加了OrbitControls来导航场景。我几乎是在克隆指针锁控件我已经让它在WASD控件中起作用(更新目标
OrbitControls的向量,作为ref传递):
const moveForward=(距离)=>{vec.setFromMatrixColumn(摄像机矩阵,0)vec.crossVectors(摄像机向上,vec)camera.position.addScaledVector(vec,距离)orbitControls.current.target.addScaledVector(向量,距离)}const moveRight=(距离)=>{vec.setFromMatrixColumn(摄像机矩阵,0)camera.position.addScaledVector(vec,距离)orbitControls.current.target.addScaledVector(向量,距离)}
但是,我不太确定如何更新目标
当相机旋转时。下面是我如何旋转相机,并且在没有OrbitControls的情况下它可以正常工作:
const-euler=新三个。欧拉(0,0,0,‘YXZ’);euler.setFromQuaternion(camera.quaternion)euler.y-=0.25*弧度;camera.quaternion.setFromEuler(euler)
在此处预览:https://codesandbox.io/s/wasd-with-orbit-9edup7