我制作了一个简单的threeJS 3d应用程序,您可以在其中环顾四周并用4个键移动。问题在于,无论您向哪里看,它都朝着相同的方向移动,这显然是因为我使用了:
camera.position.x += 0.1
答案 0 :(得分:1)
您必须将(0.1, 0, 0)
的默认位移设置为Vector3,然后将相机的旋转(四元数)应用于该矢量,然后再将其添加到其位置。请参见下面的代码:
// Create camera
var camera = new THREE.PerspectiveCamera();
// Create displacement vector to re-use
var dispVector = new THREE.Vector3();
function onRightKey() {
dispVector.set(0.1, 0, 0); // Right key moves 0.1 on x axis
applyDisplacement();
}
function applyDisplacement() {
// We apply the camera's rotation to the displacement vector
dispVector.applyQuaternion(camera.quaternion);
// Move the camera position by the resulting displacement vector
camera.position.add(dispVector);
}
您可以将相同的想法应用于其他键:(-0.1, 0, 0)
如果您想向左移动,或者(0, 0.1, 0)
如果您想向上移动,等等:
function onLeftKey() {
dispVector.set(-0.1, 0, 0); // Left key moves -0.1 on x axis
applyDisplacement();
}
function onUpKey() {
dispVector.set(0, 0.1, 0); // Left key moves 0.1 on y axis
applyDisplacement();
}