如何使用WebVR和A-Frame跟踪控制器运动事件?

时间:2018-12-27 16:40:02

标签: javascript aframe virtual-reality webvr oculus

我有一个使用A-Frame制作的WebVR页面,使用带触摸控制器的Oculus Rift。我为控制器提供了以下元素:

<a-entity oculus-touch-controls="hand: right" right-control-listener></a-entity>
<a-entity oculus-touch-controls="hand: left" left-control-listener></a-entity>
<a-entity laser-controls="hand: right" raycaster="objects: .clickable"></a-entity>

我想选择或握住一个对象,然后随着控制器的移动来移动它。但是我还没有找到控制器运动的事件。尽管 mouseup mousedown 可用,但 Mousemove 似乎不可用。

1 个答案:

答案 0 :(得分:2)

使用tick方法。如果要跟踪实体位置或旋转,请执行以下操作:

AFRAME.registerComponent('track', {
  init: function () {
     this.trackedEl = document.querySelector('#trackedEntity');
  },

  tick: function () {
     this.el.object3D.position.x = this.trackedEl.object3D.position.x;
  }
});

请参见demo,其中红球跟踪相机的x位置(用wasd键移动)。您可以为要跟踪的控制器实体使用适当的选择器来执行类似的操作。例如:document.querySelector('[laser-controls]');