Aframe 当两个框相交时,如何触发A帧碰撞事件?

Aframe 当两个框相交时,如何触发A帧碰撞事件?,aframe,Aframe,我试图检测A-FRAME v中两个盒子的碰撞。0.5.0. 我使用raycaster示例: 但对我来说,它只适用于光标与其中一个网格相交的情况。 正如本文所述,raycaster检测从起点到某个方向创建的线何时与所需网格相交(此处用可碰撞类标记)。这条碰撞检测线的起点似乎以某种方式设置在相机或光标上,而不是其中一个框上。如何重新分配此起点 在初始化场景之前,我添加了以下组件: AFRAME.registerComponent('collider-check', { dependencies:

我试图检测A-FRAME v中两个盒子的碰撞。0.5.0. 我使用raycaster示例:

但对我来说,它只适用于光标与其中一个网格相交的情况。 正如本文所述,raycaster检测从起点到某个方向创建的线何时与所需网格相交(此处用可碰撞类标记)。这条碰撞检测线的起点似乎以某种方式设置在相机或光标上,而不是其中一个框上。如何重新分配此起点

在初始化场景之前,我添加了以下组件:

AFRAME.registerComponent('collider-check', {
dependencies: ['raycaster'],
init: function () {
    console.log("we have component");
this.el.addEventListener('raycaster-intersected', function () {
    console.log('Player hit something!');
});
},
});
然后是A-FRAME实体

    <a-entity id="player" collider-check >
      <a-entity id="rc" 
        raycaster="objects: .collidable" 
        geometry="primitive: box; width: 0.5; height: 4; depth: 0.5" 
        material="shader: flat; color:gray" 
        position="0 -0.9 0" 
        rotation="90 0 0" ></a-entity>
    </a-entity>

    <a-entity id="inmotion" class="collidable" 
        geometry="primitive: box; width: 0.5; height: 4; depth: 0.5" 
        position="1 0 0"
        material="shader: flat; color: #00CCDD">
        <a-animation id="canim"
          attribute="position" 
            dur="2000"
            from ="-2 -1 0"
            to="2 0 0.5"
            fill="forwards"
            direction="alternate"
            repeat="indefinite">

        </a-animation>
    </a-entity>

使用光线投射器是检查3D空间中碰撞的一种方法,但最好是其中一种形状是光线/线条。如果有两个三维对象,则在没有光线投射器的情况下使用边界框或边界球体碰撞会更容易。以下是每种方法的示例实现:

当元素发生碰撞时,两者都将在元素上归档
hit
事件,对于一个稍微不同的情况