2010-12-06 7 views
2

Plusieurs excuses si cela a déjà été répondu mais je n'ai pas été en mesure de trouver ce que je cherchais.Conversion des degrés de rotation en impulsion Box2D

J'ai un corps dynamique Box2D auquel j'applique une impulsion linéaire pour le transformer en projectile. Donc, quand je clique n'importe où sur l'écran, je veux que le corps soit projeté vers l'emplacement tactile. Je ne suis pas encore préoccupé par la force, juste l'angle. J'ai déjà mon sprite en rotation pour pointer vers l'emplacement tactile afin que je puisse détecter l'angle de rotation initial, mais comment puis-je tourner cet angle, disons 45 degrés dans une valeur "b2Vec2" afin que je puisse lancer le corps exactement 45 degrés? quelque chose comme ceci:

float rotationValue = 45.0f; 
b2Vec2 vect = ?????? 
b2Vec2 PointVector = body->GetPosition(); 
body->ApplyLinearImpulse(vect, PointVector); 

Tous les indices seraient grandement appréciés.

Merci

Répondre

6

soupir - c'est pourquoi vous devez faire attention dans votre classe Math :)

Conversion des angles à Vect est super simple:

float angle = 45.0f; 
b2Vec2 vect = b2Vec2(cos(angle), sin(angle)); 
+0

peut-être que je me trompe, mais vous n'avez pas besoin de convertir en radians ici? – Zevan

+2

qui serait: cos (angle * PI/180) – Zevan

+0

Oui, vous devez convertir en radians lorsque vous utilisez sin() ou cos(). Cependant, dans le cas particulier de 45 degrés, c'est super facile. 'vect = b2Vec2 (1,1)' :) – Sylvan

Questions connexes