如何以相机角度移动相机?

时间:2019-12-12 22:12:24

标签: javascript three.js

我制作了一个简单的threeJS 3d应用程序,您可以在其中环顾四周并用4个键移动。问题在于,无论您向哪里看,它都朝着相同的方向移动,这显然是因为我使用了:

camera.position.x += 0.1

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();
}