A帧在摄像机方向上向前移动

时间:2018-02-10 22:01:47

标签: javascript three.js aframe

我正在尝试在A-frame中制作一个组件,将播放器/相机朝向相机朝向的方向移动。它不应该在y平面上的任何位置移动,只能在x / y平面上移动。 dom中的当前设置是:

<a-entity>
    <a-camera></a-camera>
</a-entity>

我想将实体元素位置移动到当前摄像机方向的x个单位,但它不应该在y平面上移动任何东西。我尝试了各种解决方案,但它们似乎在相机中引入了一些奇怪的转变。

1 个答案:

答案 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