Aframe 查找摄影机面对的方向

Aframe 查找摄影机面对的方向,aframe,Aframe,我能够得到相机的当前位置,即它在一帧中的x、y、z坐标 在下面的代码中,我正在使我的相机向前移动 function move_camera_forward(){ x=$("#cam").attr("position").x; y=$("#cam").attr("position").y; z=$("#cam").attr("position").z; updated_pos=x+" "+y+" "+String(Number(z)-0.2); $("#cam").attr("position",

我能够得到相机的当前位置,即它在一帧中的x、y、z坐标

在下面的代码中,我正在使我的相机向前移动

function move_camera_forward(){
x=$("#cam").attr("position").x;
y=$("#cam").attr("position").y;
z=$("#cam").attr("position").z;
updated_pos=x+" "+y+" "+String(Number(z)-0.2);
$("#cam").attr("position",updated_pos);
}

但这会沿z轴移动摄影机,而与摄影机面对的方向无关。我想根据相机面对的方向移动相机。如果相机朝向,比如说45度,我想更新三个坐标。为此,我需要找出相机所面对的方向。我该怎么做?它与fov有什么关系吗?

您可以深入到Three.js API中,以获取任何不一定会浮出水面的附加信息。因此,您可以使用

var-camera=document.querySelector(“[camera]”)。object3D


然后你可以访问摄像机的所有矢量数据。要获取相机所面对的方向,可以使用
camera.getWorldDirection()
,它返回一个带有X、Y和Z值的向量3。

我终于想出了方法。摄影机有一个旋转属性,该属性提供旋转角度。利用这些数据和一点三角法,我们可以找到更新的位置。下面的代码沿用户看到的方向移动相机

    new_x = 0;
    new_z = 0;
    function move_camera_forward() {
        x = $("#cam").attr("position").x;
        y = $("#cam").attr("position").y;
        z = $("#cam").attr("position").z;
        radian = -($("#cam").attr("rotation").y) * (Math.PI / 180);
        new_z = (new_z + (0.1 * Math.cos(radian)));
        new_x = new_x + (0.1 * Math.sin(radian));
        new_pos = new_x + " " + y + " " + (-new_z);
        console.log(new_pos)
        $("#cam").attr("position", new_pos)

    }