You need to enable JavaScript to run this app. A-Frame VR控制器射线检测父级a-sky的raycaster-intersected-cleared事件为何误触发?
优惠活动
大模型
产品
解决方案
定价
更多

A-Frame VR控制器射线检测父级a-sky的raycaster-intersected-cleared事件为何误触发?

问题场景

正在实现移动VR控制器时获取a-sky坐标的功能,当前核心代码结构如下:

<a-scene scenelistener>
  <a-sky
    id="map-sky"
    color="#222"
    radius="700"
    rotation="0 45 0"
    rotation-control
    raycaster-listen
    class="ray-castable"
  >
    <a-entity
      id="country-tiles"
      country-tiles
      scale="1 1 1"
      rotation="0 90 0"
    ></a-entity>
  </a-sky>
  <!-- Oculus 实体 -->
</a-scene>

已为a-sky及其子实体配置射线监听逻辑,用于在控制台打印射线触发的事件日志,对应的raycaster-listen组件实现如下:

AFRAME.registerComponent("raycaster-listen", {
  init: function() {
    this.el.addEventListener("raycaster-intersected", evt => {
      console.log(`raycaster ${this.el.id} intersected!!!`);
    });
    this.el.addEventListener("raycaster-intersected-cleared", evt => {
      console.log(`raycaster ${this.el.id} cleared!!!`);
    });
  }
});
异常表现

实际运行时,当射线在子实体country-tiles内外移动,子实体与父级map-sky的raycaster-intersected-cleared事件会被同时触发,A-Frame无法正确维持VR控制器射线与a-sky的交集判定,控制台输出日志如下:

raycaster  intersected!!!
raycaster map-sky intersected!!!
// 移出tile区域
raycaster  cleared!!!
raycaster map-sky cleared!!!

测试提示:本功能面向VR控制器开发,需使用WebXR模拟器完成交互测试。

内容的提问来源于stack exchange,提问作者An Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.04 21:15:04