Richtungen berechnen auf einer 2d Map
-
Hallo Zusammen!
Ich bin gerade dabei C++ zu lernen und habe dabei von Anfang an Spiele als Thema meiner Versuche genommen. Ich habe bisher eigentlich das meiste selber hinbekommen, zuletzt Pong mit hilfe der Allegro Lib.
Jetzt zu meinem Problem:
In Pong wird ja die Ballrichtung abhängig von der Stelle, an der der Ball auf das Pad trifft berechnet. Ich habe also z.B. für die äußerst linke "Kollisionszone" auf dem Pad bei Kontakt mit dem Ball die Bewegungsrichtung des Balls ungefähr so berechnet:while(!gameover){
BALLAUSGABE;
if(kollisionszone==links){
ball_x--;
ball_y--;
}
}Das bedeutet aber, ich muß jeden Winkel aufwändig selber definieren.
Wie kann ich Flugrichtungen in jede Richtung (360 Grad) berechnen?
Ich möchte jetzt als nächstes mit einer Schwarm-KI herumprobieren, habe aber das
Problem, daß ich nicht weiß wie ich die beiden Koordinaten für mein Objekt inkrementieren/dekrementieren muß um z.B. nicht 45 Grad (bei mir bisher ++x; ++y;) bewegung darzustellen, sondern z.B. 11 Grad.
Ich hoffe ihr versteht mein Problem?Gruß von Taufsteitzen
-
ja ich verstehe das Problem, und die Antwort lautet Trigonometrie. Alles was mit dem Rechtwinkligem Dreieck zu tun hat kann dir hier helfen. Allerdings sollten dann deine Koordinaten keine Integer mehr sein, die sind dafür nicht geeignet.
-
Wie war das noch gleich... dx=cos(w) und dy=sin(w) ... oder?
Je nachdem wie dein Koordinatensystem aussieht evtl. auch dy=-sin(w).
-
Jo genau so, aber eins fehlt noch dx=cos(w)*speed*time
aber am anfang kann man speed und time noch weglassen, und statt dessen eine konstante nehmen.
-
Wenn man's gleich einbaut, erspart man sich spaeter jede Menge Aerger

-
voraussetzung für den Ärger, ist aber, dass man später das Programm überhaupt noch weiter entwickeln will.