AFrame中如何实现mouseenter触发动画及raycaster警告修复
问题1:鼠标移入动画未触发的原因及修复
animation属性的写法本身没有语法错误,动画不触发是mouseenter事件未被触发导致的,存在两处错误:
a-cursor的objects属性类选择器格式错误:你写的选择器是sign,类选择器需要带.前缀,正确写法为.sign- 没有绑定几何体组件的
<a-entity>默认没有碰撞体积,raycaster无法检测到该实体,有两种修复方案:- 给class为sign的父实体添加尺寸覆盖内部元素的不可见碰撞体,添加属性:
geometry="primitive: box; width: 1.8; height: 1.6; depth: 0.1" material="visible: false" - 给内部的a-box元素添加
sign类名,让raycaster直接检测子元素的碰撞事件
- 给class为sign的父实体添加尺寸覆盖内部元素的不可见碰撞体,添加属性:
修改后的cursor代码示例:
<a-cursor objects=".duck1 .duck2 .sign" ></a-cursor>
问题2:raycaster性能警告的原因及修复
你没有主动声明raycaster组件,但<a-cursor>组件底层默认依赖raycaster实现3D空间的交互检测,所以会触发该性能警告。
修复方法为显式给raycaster指定检测范围,修改camera部分代码即可:
<a-camera position="0 0.2 1.3"> <a-cursor raycaster="objects: .duck1, .duck2, .sign" objects=".duck1, .duck2, .sign" ></a-cursor> </a-camera>
提示:多个选择器之间可用逗号分隔,避免空格导致的选择器识别异常
该配置明确指定raycaster只检测你指定的三类实体,不会遍历场景内所有实体,警告会自动消失。
内容的提问来源于stack exchange,提问作者Psychonaut007
相关产品推荐
相关产品推荐

