我想通过环顾四周并按住纸板按钮来移动,从而能够在我的虚拟现实世界中移动。我已经试了2个小时了,还是想不通。我真的不想把传送作为我的解决方案。
发布于 2018-06-09 21:32:28
我把这段代码放在一个three.js组件中,并使用aframe应用编程接口:
在init
中,检查鼠标处于打开状态还是按下状态。
在tick
中,使用extractRotation(mesh.matrix)
找到作为世界矩阵的旋转,使用direction.applyMatrix4(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)
}
}
})
Working fiddle here。
https://stackoverflow.com/questions/50770574
复制相似问题