Jump´n Run Sprung
Verfasst: 07.12.2022 12:26
Hallo in die Runde!
Ich wollte hier mal ein Thema diskutieren, was mich jetzt noch nicht gleich betrifft, aber bei meinem 3. Spiel (es soll dann ein Jump´n Run werden)!
Der perfekt animierte Sprung im Laufen und Stehen in Assembler.
Eins ist wohl schon klar, es wird eine gute Näherung sein müssen und man wird es nicht berechnen, sondern man wird eine Wertetabelle brauchen für die Zuordnung der Sprungbewegung.
Dennoch möchte ich hier mal gerne die physikalischen Grundlagen erörtern und bin dann schon sehr gespannt auf Eure Lösungen und Erfahrungen.
Physik:
Wir beschäftigen uns hier also mit dem vertikalen und schrägen Wurf! Mehrere Parameter sind dabei bekannt bzw. müssen berücksichtigt werden: Die Anfangsgeschwindigkeit des Sprunges nach oben, der Winkel des Absprunges, die Geschwindigkeit nach vorne und die Gravitation bzw. die Erdbeschleunigung. Betrachten wir gleich noch zusätzlich die Höhe des Absprunges (also wenn der Player von einer höheren Position nach unten springt - bei gleicher Höhe wird der Wert dann 0).
Wir haben also zunächst eine Anfangsgeschwindigkeit V0. Diese Geschwindigkeit teilt sich in zwei Richtungen auf (in x und in y-Richtung) also mathematisch in: V0 = Wurzel (VX Quadrat + VY Quadrat). Für die Anfangsgeschwindigkeit in x-Richtung ergibt das dann: V0,x=V0 x cos Alpha und in y-Richtung: V0,y=V0 * sin Alpha.
In x-Richtung haben wir eine gleichmäßige Bewegung: x = V0 * cos Alpha * t (t ist die Zeit).
In y-Richtung haben wir durch die Erdbeschleunigung eine gleichmäßig beschleunigte Bewegung: y = h0 - g/2 * t Quadrat + V0 x sin Alpha x t - h0 ist dabei die Anfangshöhe und g die Erdbeschleunigung.
Wenn man nun die 2. Gleichung nach t umstellt und in die erste Gleichung t dadurch ersetzt, bekommt man die erwünschte Bahngleichung:
y(x) = h0 - g/(2 * V0 Quadrat * (cos Alpha) Quadrat) * x Quadrat + x * tan Alpha
Mit dieser Formel kann man jetzt alle Werte für den Sprung ausrechnen. Die werte werden sicherlich schön krumm sein und da muss man da wohl für sich und sein Programm die beste Näherung bzw. Rundung finden...
Ich wollte hier mal ein Thema diskutieren, was mich jetzt noch nicht gleich betrifft, aber bei meinem 3. Spiel (es soll dann ein Jump´n Run werden)!
Der perfekt animierte Sprung im Laufen und Stehen in Assembler.
Eins ist wohl schon klar, es wird eine gute Näherung sein müssen und man wird es nicht berechnen, sondern man wird eine Wertetabelle brauchen für die Zuordnung der Sprungbewegung.
Dennoch möchte ich hier mal gerne die physikalischen Grundlagen erörtern und bin dann schon sehr gespannt auf Eure Lösungen und Erfahrungen.
Physik:
Wir beschäftigen uns hier also mit dem vertikalen und schrägen Wurf! Mehrere Parameter sind dabei bekannt bzw. müssen berücksichtigt werden: Die Anfangsgeschwindigkeit des Sprunges nach oben, der Winkel des Absprunges, die Geschwindigkeit nach vorne und die Gravitation bzw. die Erdbeschleunigung. Betrachten wir gleich noch zusätzlich die Höhe des Absprunges (also wenn der Player von einer höheren Position nach unten springt - bei gleicher Höhe wird der Wert dann 0).
Wir haben also zunächst eine Anfangsgeschwindigkeit V0. Diese Geschwindigkeit teilt sich in zwei Richtungen auf (in x und in y-Richtung) also mathematisch in: V0 = Wurzel (VX Quadrat + VY Quadrat). Für die Anfangsgeschwindigkeit in x-Richtung ergibt das dann: V0,x=V0 x cos Alpha und in y-Richtung: V0,y=V0 * sin Alpha.
In x-Richtung haben wir eine gleichmäßige Bewegung: x = V0 * cos Alpha * t (t ist die Zeit).
In y-Richtung haben wir durch die Erdbeschleunigung eine gleichmäßig beschleunigte Bewegung: y = h0 - g/2 * t Quadrat + V0 x sin Alpha x t - h0 ist dabei die Anfangshöhe und g die Erdbeschleunigung.
Wenn man nun die 2. Gleichung nach t umstellt und in die erste Gleichung t dadurch ersetzt, bekommt man die erwünschte Bahngleichung:
y(x) = h0 - g/(2 * V0 Quadrat * (cos Alpha) Quadrat) * x Quadrat + x * tan Alpha
Mit dieser Formel kann man jetzt alle Werte für den Sprung ausrechnen. Die werte werden sicherlich schön krumm sein und da muss man da wohl für sich und sein Programm die beste Näherung bzw. Rundung finden...