2016-03-05 94 views
0

我正在使用raycaster來查看我是否用鼠標碰到了一個網格物體(或碰)物體很薄,我可以通過增加任何可以與射線。與遊戲對象一樣,(使用three.js)我可以添加自己的碰撞網格,顯然不會渲染,但會觸發Ray?JSONLoader raycaster和碰撞網格 - three.js

enter image description here

所以,當我的光線照射是與原始網格相關的(無形)粉紅色缸,它觸發相交。

我不能簡單地製作另一個與原始組合的網格,並使其可見= false;或不透明度= 0;那是不行的。我在尋找「內置」的東西(如果存在的話)

千恩萬謝

回答

1

你想添加一個碰撞網格到你的場景中,以響應光線投射,但不渲染。

爲此,請將您的碰撞網格添加爲網格的子網格,並將碰撞網格的材質的可見性設置爲false。

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

碰撞網格不會渲染,但它會響應光線投射。

three.js r.74

+0

感謝這些,我會測試並取回。 – mtompson

+0

很好,謝謝WestLangley。 – mtompson

0

你可以保持點擊網格的集合,而不將其添加到現場。 然後只對這個集合進行光線投射:raycaster.intersectObjects(collection);

雖然你可能必須讓它們與它們的父對象「同步」。