ich habe eine sehr sehr einfache Physik Engine für ein Spiel geschrieben. Jetzt möchte ich, dass ser spieler bei jeder FPS zahl gleich schnell fällt und springt.
So wie es bei diesem Beispiel auch mit dem laufen ist:
Code: Alles auswählen
Player(0)\x = Player(0)\x + (#PixelProMS * MSDurchlauf)
Die verkürzte Hauptschleife sieht so aus:
Code: Alles auswählen
Repeat
FlipBuffers()
ExamineKeyboard()
FPS = fps()
MSDurchlauf.f = 1000 / FPS
;{ Links Rechts Bewegen
;}
;{ Springen
If KeyboardPushed(#PB_Key_LeftAlt) And Player(0)\Jump = #False
Player(0)\Vy = 1.7
Player(0)\Jump = #True
EndIf
;}
;{ Physik
If CheckBoden(Player(0)\x, Player(0)\y) = 0 And Player(0)\Jump = #False
Player(0)\Jump = #True
EndIf
If Player(0)\Jump = #True
Player(0)\Vy = Player(0)\Vy - #GravitationProMS * MSDurchlauf
Player(0)\y = Player(0)\y - Player(0)\Vy
For i = 0 To Int(Player(0)\Vy) Step - 1
If CheckBoden(Player(0)\x, Player(0)\y - i) = 1
Player(0)\Jump = #False
Player(0)\Vy = 0
Player(0)\y = Player(0)\y - i
EndIf
Next
EndIf
;}
;{ Player Sprite Zeichen
;}
Until KeyboardReleased(#PB_Key_Escape)
Der falsche Teil ist glaube ich der:
Code: Alles auswählen
Player(0)\Vy = Player(0)\Vy - #GravitationProMS * MSDurchlauf
Player(0)\y = Player(0)\y - Player(0)\Vy