javascript - 如何使用 WebVR 和 A-Frame 跟踪控制器移动事件?
问题描述
我有一个使用 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>
我想选择或抓住一个对象并在控制器移动时移动它。但我一直无法找到控制器移动的事件。Mousemove似乎不可用,即使mouseup和mousedown可用。
解决方案
使用tick
方法。如果要跟踪实体位置或旋转,请执行以下操作:
AFRAME.registerComponent('track', {
init: function () {
this.trackedEl = document.querySelector('#trackedEntity');
},
tick: function () {
this.el.object3D.position.x = this.trackedEl.object3D.position.x;
}
});
查看演示,其中红球跟踪相机的 x 位置(使用 wasd 键移动)。您可以为要跟踪的控制器实体使用适当的选择器来执行类似的操作。例如:document.querySelector('[laser-controls]');
推荐阅读
- java - 从 Logback 和 Spring Boot 中的 application-properties 文件加载 datePattern
- c# - 获取请求的地址在其上下文中无效。在我的聊天应用程序中
- javascript - 在 Vue.js 中动态访问嵌套数组时,push 不是函数
- c# - Select2 PlugIn 所选值未更新为 DropDownList
- jquery - 如何将外部 js 文件添加到 vue cli 应用程序中?
- wordpress - 如何安装ecwid支付网关模板
- qt - 如何使用 QByteArray 数据播放音乐?
- google-sheets - 如何限制组合框仅显示 Google 表格中尚未选择的项目?
- excel - 根据另一个单元格中的值更改单元格中的字体颜色
- react-native - 为 React Native 应用程序存储和下载多达 5000 个 mp3 文件的最佳方式是什么?