2012-07-16 10 views
5

Con il mouse, proietto un raggio per vedere quali oggetti sono intersecati dal clic. Ho un sacco di oggetti mesh con cui funziona. Tuttavia, quando aggiungo uno Sprite all'elenco di oggetti, lo Sprite non viene mai rilevato.Rilevamento dei raggi che intersecano uno sprite

1) Gli sprite devono essere rilevati? C'è qualcosa che li rende non rilevabili? C'è qualcosa che devo fare per farli apparire "solidi"? 2) Se gli sprite non possono essere rilevati, qual è l'approccio migliore per renderli cliccabili? Aggiungi cilindri invisibili attorno a loro?

Ecco un codice parziale che funziona con 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) { 

risposta

Problemi correlati