Adrop fire raycaster on drop event

问题描述 投票:0回答:1

我正在尝试从React UI将对象放到3D场景中。

我可以捕获放置数据/位置等,我现在尝试在RayCaster中使用它来确定将3D实体放置到了哪个实体上。

const handleDragStop = (e) => {
    console.log(e)

    const scene = document.getElementById('scene');
    const raycaster:any = scene.getAttribute("raycaster");
    const camera = AFRAME.scenes[0].camera;

    console.log(raycaster)
    console.log(AFRAME.scenes[0])

    const mouse = new window.THREE.Vector2();
    mouse.x = ( e.clientX / window.innerWidth ) * 2 - 1;
    mouse.y = - ( e.clientY / window.innerHeight ) * 2 + 1;
    raycaster.setFromCamera( mouse, camera );
    var intersects = raycaster.intersectObjects( scene.children );
    console.log(intersects)
};

Aframe版本的RayCaster似乎没有raycaster.setFromCamera()函数,因此无法将其识别为函数。

我如何从掉落事件中触发光线播放器?

编辑

我可以在新的Raycaster上使用它

const raycaster = new window.THREE.Raycaster();

新的问题是,如何使此射线广播仪使用与现有对象相同的对象?

谢谢

aframe
1个回答
0
投票

要访问三个raycaster,必须对具有raycaster组件的实体执行以下操作:

entityEl.components.raycaster.raycaster.setFromCamera(..);
© www.soinside.com 2019 - 2024. All rights reserved.