JSONLoader 光线投射器和碰撞网格 - three.js

JSONLoader raycaster & collision meshes - three.js

我正在使用 raycaster 查看我是否用鼠标(或触摸)击中了一个网格物体很薄,我可以增加任何可以与射线相交的大小。与游戏对象一样,(使用 three.js)我可以添加自己的碰撞网格,它显然不会渲染,但会触发射线吗?

因此,当我的光线击中与原始网格关联的(不可见的)粉红色圆柱体时,它会触发相交。

我不能简单地制作另一个与原始网格分组的网格并使其可见 = false;或不透明度 = 0;那行不通。我正在寻找一些东西 'built in'(如果它存在)

非常感谢

您可以维护一组可单击的网格,而无需将它们添加到场景中。 然后对这个集合进行光线投射:raycaster.intersectObjects(collection);

尽管如此,您可能必须将它们 "synchronized" 与其父对象一起保留。

您想将碰撞网格添加到响应光线投射但不渲染的场景。

为此,将碰撞网格添加为网格的子项,并将碰撞网格的 material 的可见性设置为 false。

collisionMeshMaterial = new THREE.MeshBasicMaterial( {
    visible: false
} );

碰撞网格不会渲染,但会响应光线投射。

three.js r.74