首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Aframe纸板运动

Aframe纸板运动
EN

Stack Overflow用户
提问于 2018-06-09 11:13:20
回答 1查看 79关注 0票数 0

我想通过环顾四周并按住纸板按钮来移动,从而能够在我的虚拟现实世界中移动。我已经试了2个小时了,还是想不通。我真的不想把传送作为我的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 21:32:28

我把这段代码放在一个three.js组件中,并使用aframe应用编程接口:

init中,检查鼠标处于打开状态还是按下状态。

tick中,使用extractRotation(mesh.matrix)找到作为世界矩阵的旋转,使用direction.applyMatrix4(matrix)将其应用于正向向量,并将其添加到当前摄影机位置。

代码语言:javascript
复制
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)
    }
  }
})

Working fiddle here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50770574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档