在鼠标点击时,我投射光线以查看哪些对象与点击相交。我有一堆Mesh对象可以使用。但是,当我将Sprite添加到对象列表时,从未检测到Sprite。
1)是否应该检测到精灵?有什么东西让它们无法被发现吗?我需要做些什么来使它们看起来“稳固”吗? 2)如果无法检测到Sprites,那么使它们可点击的最佳方法是什么?在它们周围添加隐形圆柱?
这是一些适用于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) {
答案 0 :(得分:2)
似乎Raycaster类中的intersectObject
方法仅配置为查找与THREE.Particle和THREE.Mesh的冲突。请参阅以下目前的源代码:
https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js