Вы должны явно контролировать список raycaster objects
. Например:
raycaster="objects: [data-raycastable]"
Теперь у нас есть сущность, которую мы хотим сделать raycastable:
<a-entity geometry material data-raycastable>
Допустим, мы скрываем сущность. Мы также удаляем его атрибут raycastable:
el.object3D.visible = false;
el.removeAttribute('data-raycastable');
И скажем, мы добавим его обратно:
el.object3D.visible = true;
el.setAttribute('data-raycastable', '');
В более сложных сценах это может быть более утомительным для многих объектов. Такие вещи, как aframe-state-component
(https://www.npmjs.com/package/aframe-state-component), могут помочь путем декларативного отключения raycasability в зависимости от состояния сцены. Скажем, у нас было <a-entity raycaster="objects: [raycastable]">
с AFRAME.registerComponent('raycastable', {})
, и в состоянии было isMenuActive
, которое управляется компонентом состояния :
<a-entity id="button" bind-toggle__raycastable="isMenuActive">
И я написал свой собственный компонент для синхронизации raycastable / видимости.
<a-entity id="button" bind__visible-raycastable="isMenuActive">