2010-12-06 3 views
2

Viele Entschuldigungen, wenn dies zuvor beantwortet wurde, aber ich konnte nicht ganz finden, was ich suchte.Umwandeln der Rotationsgrade in Box2D Impuls

Ich habe einen dynamischen Körper von Box2D, den ich linearen Impuls anwende, um es in ein Projektil zu verwandeln. Wenn ich also irgendwo auf den Bildschirm klicke, möchte ich, dass der Körper in Richtung der Touch-Position projiziert wird. Ich bin nicht besorgt über die Kraft noch, nur der Winkel.

Ich habe bereits mein Sprite drehen, um auf den Touch-Standort zu zeigen, so kann ich den anfänglichen Drehwinkel erkennen, aber wie mache ich diesen Winkel, sagen 45 Grad in einen "b2Vec2" -Wert, so dass ich den Körper genau starten kann 45 Grad? etwas wie das:

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

Alle Hinweise würden sehr geschätzt werden.

Dank

Antwort

6

Seufzer - das ist, warum Sie die Aufmerksamkeit Ihrer Klasse Math bezahlen sollte :)

Winkel Konvertieren ist zu vect super einfach:

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

vielleicht bin ich falsch, aber Müssen Sie hier nicht in Radianten konvertieren? – Zevan

+2

was wäre: cos (angle * PI/180) – Zevan

+0

Ja, Sie müssen in Radiant konvertieren, wenn Sie sin() oder cos() verwenden. Aber im speziellen Fall von 45 Grad ist es super einfach. 'vect = b2Vec2 (1,1)' :) – Sylvan