Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Administrator
Zitat von »"drakon"«
Hol dir den Winkel, um den sich deine Rakete drehen müsste, um genau auf das Ziel zu zeigen und dann drehst du die Rakete um einen Prozentsatz vom dem Wert in die richtige Richtung. Und schon sollte das klappen.
Zitat von »"David Scherfgen"«
Dann würde die Rakete sich aber ungleichmäßig drehen und den Zielwinkel niemals erreichen. Mach es doch so: rechne den aktuellen Winkel der Rakete aus und den Winkel zum Ziel. Dann, je nach dem, ob der aktuelle Winkel kleiner oder größer als der Zielwinkel ist, drehst du die Rakete ein wenig nach rechts oder nach links.
C-/C++-Quelltext |
|
1 2 3 |
raketerotationx = 200 - Schusss->GetPosition().x; raketerotationy = 200 - Schusss->GetPosition().y; result = atan2 (raketerotationx,raketerotationy)* 180.0f/ 3.14; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
if(Schusss->GetRotation() <= result) Schusss->Rotate(-70 * g_pTimer->GetElapsed()); else Schusss->Rotate(+70 * g_pTimer->GetElapsed()); Xposi += 100 * sin (-(Schusss->GetRotation() * 3.14159265f) / 180.0) *g_pTimer->GetElapsed(); Yposi -= 100 * cos (-(Schusss->GetRotation() * 3.14159265f) / 180.0) *g_pTimer->GetElapsed(); |
Werbeanzeige