2009-05-28 6 views
0

J'ai une boule qui se déplace à l'intérieur d'un cube, et je la détecte quand elle sort du cube (avec une sphère englobante et une boîte englobante). Maintenant je voudrais savoir de quel côté sort la balle. Ensuite, je pourrais rediriger la balle dans la bonne direction. Comment puis-je faire cela avec la matrice "monde" de la balle?Détection de collision XNA

Dois-je garder une trace des coordonnées de la balle moi-même, ou devrais-je les déduire de la matrice du monde?

Répondre

2

Je recommencerais avec les collisions. Vous avez six plans (chacun une paire [point, vecteur unité normale]) et une sphère (paire [point, rayon]).

Vérifiez le point par rapport à chaque plan. Pour ce faire, soustrayez le vecteur unité, redimensionné par le rayon de la sphère, du plan à partir du point. (Point - = PlaneUnitVector * radius)

Maintenant, avec certains calculs vectoriels, vous pouvez voir de quel côté du plan il est.

Vous utiliserez ensuite le vecteur unitaire du plan pour le calcul du report.

Le prochain problème que vous rencontrerez est le cas où vous traversez plus d'un plan à la fois.

Questions connexes