6

マウスをクリックすると、光線を投影して、クリックによってどのオブジェクトが交差するかを確認します。これが機能するメッシュオブジェクトがたくさんあります。ただし、スプライトをオブジェクトのリストに追加すると、スプライトが検出されません。

1) スプライトを検出する必要がありますか? それらを検出できないようにするものはありますか?それらを「堅実」に見せるために何かする必要がありますか? 2) スプライトを検出できない場合、スプライトをクリック可能にする最善の方法は何ですか? それらの周りに目に見えない円柱を追加しますか?

Mesh で動作するコードの一部を次に示します。

var containerPosition = $container.position();
var vector = new THREE.Vector3(((event.clientX - containerPosition.left) / scene.WIDTH) * 2 - 1, - ((event.clientY - containerPosition.top) / scene.HEIGHT) * 2 + 1, 0.5);
new THREE.Projector().unprojectVector(vector, scene.camera);
var ray = new THREE.Ray(scene.camera.position, vector.subSelf(scene.camera.position).normalize());
var intersects = ray.intersectObjects(scene.solidObjects);
if (intersects.length > 0) {
4

1 に答える 1

2

Raycaster クラスのintersectObjectメソッドは、THREE.Particle および THREE.Mesh との衝突のみを探すように構成されているようです。現在のソース コードは次の場所にあります。

https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js

于 2013-03-18T01:18:24.510 に答える