Physik/FPS anpassen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Hellboy
Beiträge: 14
Registriert: 11.09.2004 11:20

Physik/FPS anpassen

Beitrag von Hellboy »

Hi,
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)
PixelProMS sind hier wie viele Pixel der Spieler in einer MS laufen soll, und MSDurchlauf sind die MS, die für einen Durchlauf der Hauptschleife gebraucht werden. (Bei 100 FPS - 10 MS pro Durchlauf)

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)
Player(0)\Vy = velocity

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
Würde mich freuen, wenn ihr mir helfen könntet.
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Du musst natürlich die Spilerbewegung auch in Pixel/ms machen und
entsprechend mit [c]MSDurchlauf[/c] multiplizieren.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
Hellboy
Beiträge: 14
Registriert: 11.09.2004 11:20

Beitrag von Hellboy »

sry wenn die Frage jetzt irgendwie dumm ist, aber welche Spielerbewegung meint du?
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Hellboy hat geschrieben:welche Spielerbewegung meint du?

Code: Alles auswählen

Player(0)\Vy = Player(0)\Vy - #GravitationProMS * MSDurchlauf 
Player(0)\y = Player(0)\y - Player(0)\Vy 
Das erste verändert ja die geschwindigkeit, da wird bereits mit MS
gerechnet, das zweite bewegt dann letztendlich und da spielen MS keine
Rolle mehr, was ein Fehler ist.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
Hellboy
Beiträge: 14
Registriert: 11.09.2004 11:20

Beitrag von Hellboy »

Herzlichen Dank
Jetzt hab ich's auch gerallt :)
Antworten