Einzelnen Beitrag anzeigen

Benutzerbild von Seniman
Seniman

Registriert seit: 15. Sep 2003
Ort: Münster
98 Beiträge
 
#2

Re: Fehler beim Winkelausrechen

  Alt 18. Jan 2004, 17:55
Hallo PyroCracker,

wenn du den Winkel zwischen Maus und Spielfigur berechnen willst empfehle ich dir die Funktion
function ArcTan2(const Y, X: Extended): Extended; Damit bekommst du nämlich, wenn du die Entfernung in X- und Y-Richtung angibst, den tatsächlichen Winkel.
Wenn du einfach arctan benutzt, dann gibt es ein Problem: Das Programm kann nicht unterscheiden, ob der Zauber jetzt nach obenlinks oder untenrechts fliegen soll, der Tangens beider Winkel ist nämlich gleich. Deswegen ist arctan2 besser.

Ich halte eine andere Möglichkeit allerdings für noch besser:
Statt den Winkel und danach den Sinus und Kosinus des Winkels auszurechnen, berechne doch einfach gleich den Richtungsvektor des Zaubers.
Angenommen die Figur steht an den Koordinaten (x,y) und die Maus bei (mx,my) dann wären die Geschwindigkeitskomponenten vx und vy des Zaubers so:
Delphi-Quellcode:
vx:= (mx-x)/sqrt(sqr(mx-x)+sqr(my-y));
vy:= (my-y)/sqrt(sqr(mx-x)+sqr(my-y));
Das ganze geht über den Satz von Pythagoras.
Dann sparst du dir auch in jedem Frame den Sinus und Kosinus von dem Winkel auszurechen, sondern addierst einfach nur vx bzw vy.

Grüße
Seniman
  Mit Zitat antworten Zitat