光线投射组中的对象+组内的对象

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

我想要实现的目标:首先,您只能选择组中的对象“可交互”。当您单击“可交互”对象时,您现在可以选择组“master”中的任何对象。 (你正在选择一个可交互的,然后选择一个对象来放置它。)

“master”包含“可互动”组。现在,我只能从“可互动”内的选择切换到“主”内的选择,而无需“可互动”。

这是我的代码:

function render() {

  raycaster.setFromCamera(mouse, camera);

  if (obj_selected) {intersects = raycaster.intersectObjects(master.children)}
  else {intersects = raycaster.intersectObjects(interactable.children)}

  if (intersects.length > 0) {
    if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex);

    INTERSECTED = intersects[0].object;
    INTERSECTED.currentHex = INTERSECTED.material.emissive.getHex();
    INTERSECTED.material.emissive.setHex( 0xf4425f );
  } else {
    if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex);
    INTERSECTED = null;
  }

  renderer.render(scene, camera);

}

我希望我的解释不会太混乱。提前致谢。

three.js raycasting
1个回答
1
投票

没关系,我想通了!

因此,我没有将组件放入组中,而是将网格添加到数组中。我有三个数组:master,static和interactionable。如果我得到了主人的交叉点,那么我可以访问我的场景中的所有对象而不会弄乱组。

结论:当我只是对事物进行分类时,我认为不应该使用群组。

© www.soinside.com 2019 - 2024. All rights reserved.