Forum: PC-Programmierung X- und Y-Bewegung mit Berücksichtigung des Winkels


von Robert (Gast)


Lesenswert?

Guten Morgen,
ich bin dabei ein Spiel zu programmieren. Mein Charakter kann sich 
drehen und natürlich laufen. Steht er im Winkel 0° und ich drücke W dann 
läuft er natürlich nur auf der Y-Achse. Halte ich allerdings W und D, 
läuft er ja quasi mit halber Geschwindigkeit auf der Y-Achse und mit 
halber Geschwindigkeit auf der X-Achse.

Wie man das anstellt steht auch z.B. hier:
http://stackoverflow.com/questions/5192983/calculating-x-y-movement-based-on-rotation-angle
1
X += Speed * Math.Cos(angle);
2
Y += speed * Math.Sin(angle);

Kann mir jemand erklären warum man für die X-Achse Cosinus nimmt und für 
die Y-Achse Sinus? Ich denke mal diese Frage wird dumm sein da ich weiß 
das es damit zutun haben muss das die X-Achse der Y-Achse ja um 90° 
verschoben ist.

Ist jemand so freundlich und kann mir das vll. noch irgendwie erläutern? 
Bin leider nicht so Mathe-Stark.
Sorry, vielen Dank,
mfG.

von Yalu X. (yalu) (Moderator)


Lesenswert?


von Theor (Gast)


Lesenswert?

Möglicherweise hilfen Dir die graphischen Darstellungen hier 
https://de.wikipedia.org/wiki/Sinus#Definition_am_Einheitskreis etwas 
weiter.

von Dirk B. (dirkb2)


Lesenswert?

Du solltest dabei aber bedenken, das 0° (normalerweise) auf der X-Achse 
liegt

von Dirk B. (dirkb2)


Lesenswert?

Robert schrieb:
> halte ich allerdings W und D,
> läuft er ja quasi mit halber Geschwindigkeit auf der Y-Achse und mit
> halber Geschwindigkeit auf der X-Achse.

das kommt auch nicht die halbe Geschwindigkeit (0.5) hin, sondern 
Wurzel(0.5) = 0.707, damit in der quadratischen Summe (Phytagoras) 
wieder 1 raus kommt.

: Bearbeitet durch User
von Dirk B. (dirkb2)


Lesenswert?

.. und die Winkelfunktionen im Computer arbeiten in den allermeisten 
Fällen mit Bogenmass und nicht mit Grad.

Du musst das also vorher umrechnen.

von Daniel A. (daniel-a)


Lesenswert?

Dirk B. schrieb:
> das kommt auch nicht die halbe Geschwindigkeit (0.5) hin, sondern
> Wurzel(0.5) = 0.707, damit in der quadratischen Summe (Phytagoras)
> wieder 1 raus kommt.

Wenn man die Manhattan metrik verwendet stimmt die halbe Geschwindigkeit 
wieder, aber dann würde man nicht sin und cos verwenden, oder müsste es 
noch anders normalisieren. Gibt es bereits Games, die alle Entfernungen 
mit Manhattan metrik berechnen?

von Dirk B. (dirkb2)


Lesenswert?

Daniel A. schrieb:
> Manhattan metrik

da ist pi dann 4

von S. R. (svenska)


Lesenswert?

Daniel A. schrieb:
> Gibt es bereits Games, die alle Entfernungen
> mit Manhattan metrik berechnen?

Ich tippe mal auf so ziemlich alle Spiele, die zweidimensional auf 
quadratischen Feldern aufgebaut sind und keine diagonalen Bewegungen 
zulassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.