2D Sprung

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ist es auch...
es wird nur meistens von mathematikern erklärt, nicht von spieleprogrammierern.

im grunde ist die koordinate eines sprites ein ortsvektor,
nämlich wie viel man vom punkt (0,0) 'gehen' muss, um diese position zu erreichen.

wenn dein sprite jetzt eine bewegung macht, ändert sich seine position in jedem frame um einen bestimmten wert,
sagen wir mal es geht um 3 nach rechts und 2 nach unten, also ist sein bewegunsvektor (3,2)

wenn es vorher bei (200,100) war, musst du in jedem frame (3,2) dazuaddieren,
um die jeweilige position herauszubekommen.

du kannst auch sagen, wie weit es sich in 40 frames bewegt,
nämlich (200,100) + 40 * (3,2) = (320,180)
das nennt man dann skalarprodukt
(die 40 ist ein skalar, weil sie sich auf beide komponenten des vektor gleich stark auswirkt.)

wenn sich jetzt die geschwindiogkeit ändert, hast du einen beschleunigungsvektor.

genauso, wie du in jedem frame die geschwindigkeit zum ort addierst,
addierst du in jedem frame die beschleunigung zur geschwindigkeit.

das einfachste beispiel dafür ist ein "moon-lander", also ein game,
wo du triebwerke feuerst, und dein raumschiff sich träge bewegt.

im beispiel oben stimmen die bezeichner nicht ganz...
Vel eigentlich von velocity, Accel von Acceleration, aber
YVel ist im grunde die Y-position, Accel die geschwindigkeit, und das +0.25 die fallbeschleunigung.

am anfang des sprung bekommt das sprite eine y-geschwindigkeit von -10 gegeben. (Accel = -10)
die wird jetzt in jedem frame mit seiner position verrrechtet. (YVel - Accel)
und dann wird die geschwindigkeit über die beschleunigung verändert. (Accel+0.25)

als ergebnis fliegt das sprite erst hoch, wird langsamer und fällt dann wieder runter.
das erreichen der alten koordinate (If If VelY <= 0) beendet den sprung.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten