2013-05-10 2 views
0

J'ai utilisé la méthode de raycasting pour détecter différentes bandes colorées de chaque côté de la piste et maintenir mon objet voiture en position en calculant la distance. Mais le problème est que le rayon pointe toujours dans la direction constante dans le système de coordonnées global et ne change pas avec le mouvement (rotation) de l'objet de la voiture. Il pourrait avoir si la direction du rayon était dans le cadre de référence de la voiture que je ne suis pas capable de comprendre comment faire. Actuellement je le faisDirection de Raycasting par rapport au système de coordonnées global, non local

var rayon = nouveau TROIS.RayCaster (car.position, nouveau TROIS.Vector3 (-1,0,0), 0,50);

Le mouvement de la voiture est dans le plan quelqu'un

X-Z peut indiquer une solution?

Répondre

1

Votre lancer de rayon se fait dans l'espace du monde, vous avez donc besoin du bon vecteur d'espace du monde. Je suppose que la voiture est un enfant de la scène, et pas un autre objet en rotation.

Pour construire un vecteur unitaire qui pointe dans la direction de la voiture dans le système de coordonnées mondial, commencez par construire un vecteur unitaire qui pointe dans la direction de la voiture dans son système de coordonnées local - quoi qu'il arrive dans votre cas:

var vector = new THREE.Vector3(-1, 0, 0); 

Appliquez ensuite la même rotation à ce vecteur que celui appliqué à la voiture.

vector.applyQuaternion(car.quaternion); 

EDIT: Mise à jour à Three.js R.66

+0

Merci beaucoup @WestLangley .. le problème a été résolu .. mais les bandes qui sont détectées sont opposées de wat est prévu à savoir des bandes sur -ve x de l'espace-monde sont détectés en utilisant Vector3 (1,0,0) et viceversa .. Je peux toujours les utiliser dans ma logique, mais je voudrais savoir pourquoi cela se passe –

+0

Vous devez poster une autre question si vous ont des problèmes supplémentaires. Je vous suggère de fournir un exemple simple et vivant (jsfiddle.net) pour démontrer le problème. – WestLangley

+0

Ok ... thnx ... posera une autre question –

Questions connexes