我能够获得相机所处的当前位置,即其在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",updated_pos);
}
但无论相机朝向哪个方向,都会沿z轴移动相机。我想根据相机的方向移动相机。如果相机面对45度,我想更新三个坐标。为此,我需要找出相机面向的方向。我怎样才能做到这一点?它与fov有关吗?
答案 0 :(得分:2)
您可以深入了解Three.js API,以获取Aframe不一定会浮出水面的任何其他信息。所以你可以使用
获取相机对象 var camera = document.querySelector('[camera]').object3D
然后您可以访问相机的所有矢量数据。要获得相机所面向的方向,您可以使用camera.getWorldDirection()
并返回带有X,Y和Z值的Vector3。
答案 1 :(得分:2)
我终于想出了如何做到这一点。相机具有旋转属性,可以给出旋转角度。通过这些数据和一些三角函数,我们可以找到更新的位置。以下代码将相机移动到用户看到的方向。
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)
}