我正在尝试在A-frame中制作一个组件,将播放器/相机朝向相机朝向的方向移动。它不应该在y平面上的任何位置移动,只能在x / y平面上移动。 dom中的当前设置是:
<a-entity>
<a-camera></a-camera>
</a-entity>
我想将实体元素位置移动到当前摄像机方向的x个单位,但它不应该在y平面上移动任何东西。我尝试了各种解决方案,但它们似乎在相机中引入了一些奇怪的转变。
答案 0 :(得分:2)
如何使用polar coordinates ??
基本上,改变位置
x = r * cos(a)
y = r * sin(a)
其中“r”是步骤,“a”是角度。
<小时/> 理论很无聊,所以让我们练习:
AFRAME.registerComponent("foo", {
init: function() {
var player = document.querySelector("a-camera")
window.addEventListener("keydown", (e) => {
if (e.code === "KeyR") {
var angle = player.getAttribute("rotation")
var x = 1 * Math.cos(angle.y * Math.PI / 180)
var y = 1 * Math.sin(angle.y * Math.PI / 180)
var pos = player.getAttribute("position")
pos.x -= y;
pos.z -= x;
player.setAttribute("position", pos);
}
})
}
})
这很简单,每次按“R”我都会得到角度,计算移位,并设置新位置。
查看here。