Aframe 框架纸板运动

Aframe 框架纸板运动,aframe,Aframe,我希望能够在我的虚拟现实世界中移动,环顾四周,按住纸板按钮移动。我已经试了两个小时了,还是想不出来。我真的不想使用远程传送作为我的解决方案。我会将其放入一个aframe组件中,并使用three.js API: 在init中,检查鼠标是向上还是向下。 在勾选中,使用提取旋转(mesh.matrix)查找作为世界矩阵的旋转,使用方向将其应用于正向向量。应用矩阵x4(matrix),并将其添加到当前相机位置 AFRAME.registerComponent("foo", { init: funct

我希望能够在我的虚拟现实世界中移动,环顾四周,按住纸板按钮移动。我已经试了两个小时了,还是想不出来。我真的不想使用远程传送作为我的解决方案。

我会将其放入一个aframe组件中,并使用three.js API:

init
中,检查鼠标是向上还是向下。
勾选
中,使用
提取旋转(mesh.matrix)
查找作为世界矩阵的旋转,使用
方向将其应用于正向向量。应用矩阵x4(matrix)
,并将其添加到当前相机位置

AFRAME.registerComponent("foo", {
  init: function() {
    this.mouseDown = false
    this.el.addEventListener("mousedown", (e) => {
      this.mouseDown = true
    })
    this.el.addEventListener("mouseup", (e) => {
      this.mouseDown = false
    })
  },
  tick: function() {
    if (this.mouseDown) {
      let pos = this.el.getAttribute("position")
      let mesh = this.el.object3D
      var matrix = new THREE.Matrix4();
      var direction = new THREE.Vector3(0, 0, -0.1);

      matrix.extractRotation(mesh.matrix);  
      direction.applyMatrix4(matrix)
      direction.add(new THREE.Vector3(pos.x, pos.y, pos.z))
      this.el.setAttribute("position", direction)
    }
  }
})

工作小提琴。

我想出来了!我使用鼠标事件和javascript使我的相机移动!