2012-07-16 23 views
5

Al hacer clic con el mouse, proyecto un rayo para ver qué objetos se cruzan con un clic. Tengo un montón de objetos Mesh con los que esto funciona. Sin embargo, cuando agrego un Sprite a la lista de objetos, el Sprite nunca se detecta.Detección de rayos que intersectan un elemento

1) ¿Deberían detectarse los Sprites? ¿Hay algo que los hace no detectables? ¿Hay algo que deba hacer para que parezcan 'sólidos'? 2) Si no se pueden detectar Sprites, ¿cuál es el mejor enfoque para hacer que se pueda hacer clic en ellos? Añadir cilindros invisibles alrededor de ellos?

Aquí hay algunos códigos parciales que funcionan con Malla.

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) { 

Respuesta

Cuestiones relacionadas