【发布时间】:2018-11-22 06:46:58
【问题描述】:
我在 VR 控制器实体上附加了一个 raycaster 组件:
<a-entity id="righthand"
vive-controls="hand: right; "
oculus-touch-controls="hand: right;"
controls-ui
collider-check
>
<a-entity raycaster="objects: .collidable; showLine: true; far: 100; " line="color: blue; opacity: 0.5" ></a-entity>
</a-entity>
我在场景中得到了一个实体,它将接收光线跟踪事件:
<a-entity id='myCube' class="collidable" position="0 1.25 -6" obj-model="obj: #cube-obj; mtl: #cube-mtl" >
</a-entity>
如何在“raycaster-intersected”事件中获取碰撞实体的 ID 或任何引用? 我尝试了以下代码,但似乎没有任何内容包含此数据:
AFRAME.registerComponent('collider-check', {
dependencies: ['raycaster'],
init: function () {
this.el.addEventListener('raycaster-intersected', function (evt) {
console.log(evt.detail.el); // not here
console.log(evt.detail.intersection); // not here
console.log(evt.detail);// not here
console.log('Player hit something!');
});
}
});
提前致谢。
---------更新-----------
@Piotr Adam Milewski 的回答是正确的。要监听的事件是 raycaster-intersection 而不是 raycaster-intersected。通过这种方式,您可以循环一个相交实体的数组。
是否有可能从 raycaster-intersected 获得相同的结果??如果该事件是在相交实体上发出的,那么应该可以获得它的 id 和其他属性。我认为每次发生相交事件时循环遍历一个数组并不理想。
【问题讨论】:
-
我已经添加了使用目标事件的解决方案
-
是的,现在可以了。也许 Aframe 文档应该提到这一切。
-
你的碰撞检查应该附加到光线投射器上。上面的代码现在有两个 raycasters。
标签: javascript aframe