6

在鼠标单击时,我会投射一条射线以查看哪些对象与单击相交。我有一堆可以使用的 Mesh 对象。但是,当我将 Sprite 添加到对象列表时,从未检测到 Sprite。

1) 是否应该检测到 Sprite?有什么东西使它们无法检测到吗?我需要做些什么来使它们看起来“坚固”吗?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

似乎intersectObjectRaycaster 类中的方法仅配置为查找与 THREE.Particle 和 THREE.Mesh 的碰撞。查看当前源代码:

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

于 2013-03-18T01:18:24.510 回答