enter image description here如果我们可以在Oculus Go控制器上模拟6dof控制会怎么样?想象一下,我们将控制器3d模型转换为一只手,它仍然在旋转,但是想象一下,我们使用触摸板在空间中向前、向左、向右或向后移动手,触摸板让您在空间中沿z轴和x轴移动,但加速计/陀螺仪给您提供y轴和x轴。因此,加速计/陀螺仪充当手臂,触摸板充当手/手腕,这只手可以前后移动,只能左右转动,握住扳机,手不能上下倾斜,但手臂可以弥补这一点。那么我该如何构建它呢?
发布于 2018-11-21 20:25:11
有提供在方向上按下拇指垫的事件的https://www.npmjs.com/package/aframe-thumb-controls-component (例如,thumbupstart、thumbleftend)。
编写一个组件来侦听这些事件,设置一个属性(例如,this.buttons.left = true,然后tick处理程序需要根据按下的按钮更新this.el.object3D.position。
还需要考虑相机面对的方向。https://github.com/aframevr/aframe/blob/master/src/components/wasd-controls.js是一个很好的起点,因为它很相似,它可以监听按键并转换位置。只需修改为使用拇指控件即可。
更多提示:
<script src="https://unpkg.com/aframe-thumb-controls-component@1.1.0/dist/aframe-thumb-controls-component.min.js">
AFRAME.registerComponent('thumb-movement-controls', {
init: function () {
this.buttons = {
left: false, right: false, up: false, down: false
};
this.el.addEventListener('thumbleftstart', () => {
this.buttons.left = true;
});
this.el.addEventListener('thumbleftend', () => {
this.buttons.left = false;
});
},
tick: function () {
// Really simplified movement. Does not take into account camera heading or velocity / time, but wasd-controls shows how.
if (this.buttons.left) {
this.el.position.x -= 0.001;
}
}
});
<a-entity daydream-controls thumb-controls thumb-movement-controls></a-entity>https://stackoverflow.com/questions/53407234
复制相似问题