Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:03

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Problem mit Timebased Movement
BeitragVerfasst: Mo Aug 15, 2005 19:47 
Offline
DGL Member

Registriert: Mo Aug 15, 2005 19:29
Beiträge: 38
Hi ihr.. ist mein erster Post hier und schon gleich ein Problem ;)
Ich habe mir für meine 2d-Anwendung aus dem Bomberman-Tut das Teil mit der Zeitbasierten Bewegung durchgelesen und versucht, bei mir umzusetzen. Ging auch soweit, nur jetzt hab ich was gemacht und wenn ich bei Speed mehr als 5 mache, "springt" das richtig, also vorher konnte ich Speed auf 100 setzen und es ging Flüssig voran, jetzt muss ich Speed auf 1 bzw. 2 setzen, damit es wenigstens etwas schneller geht, als ohne Speed. Naja ich geb euch mal den Bereich, wo es drin steht:
Code:
  1.  
  2. procedure TGLForm.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  3. var
  4.  QPCStartCount, QPCEndCount : Int64;
  5. begin
  6. QueryPerformanceCounter(QPCStartCount);  // Timer
  7. // In die Projektionsmatrix wechseln
  8. glMatrixMode(GL_PROJECTION);
  9. // Identitätsmatrix laden
  10. glLoadIdentity;
  11. // Viewport an Clientareal des Fensters anpassen
  12. glViewPort(0, 0, ClientWidth, ClientHeight);
  13. // Perspective, FOV und Tiefenreichweite setzen
  14. gluPerspective(60, ClientWidth/ClientHeight, 1, 128);
  15.  
  16. // In die Modelansichtsmatrix wechseln
  17. glMatrixMode(GL_MODELVIEW);
  18. // Identitätsmatrix laden
  19. glLoadIdentity;
  20. // Farb- und Tiefenpuffer löschen
  21. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  22.  
  23. ShowText;
  24.  
  25. // Hinteren Puffer nach vorne bringen
  26. SwapBuffers(DC);
  27. // Windows denken lassen, das wir noch nicht fertig wären
  28. Done := False;
  29.  
  30. // Nummer des gezeichneten Frames erhöhen
  31. inc(Frames);
  32. // FPS aktualisieren
  33. if GetTickCount - StartTick >= 500 then
  34.  begin
  35.  FPS       := Frames/(GetTickCount-StartTick)*1000;
  36.  Frames    := 0;
  37.  StartTick := GetTickCount
  38.  end;
  39. QueryPerformanceCounter(QPCEndCount);        // Timer
  40. timefactor := (QPCEndCount-QPCStartCount)/PerfCounterFreq*100; // Faktor berechnen
  41. end;

Und dann eben noch bei OnCreate:
Code:
  1. QueryPerformanceFrequency(PerfCounterFreq); // Timer

Ja und so beweg ich sie:
Code:
  1.  
  2. procedure TGLForm.FormKeyDown(Sender: TObject; var Key: Word;
  3.   Shift: TShiftState);
  4. var
  5.   Re: TRectangle;
  6. begin
  7. Re:=TRectangle(RechtListe[1]);
  8.   if GetAsyncKeyState(vk_right) <> 0 then begin
  9.     Re.pos.x:=Re.pos.x+timefactor*Re.speed;
  10.   end;
  11.   if GetAsyncKeyState(vk_left) <> 0 then begin
  12.     Re.pos.x:=Re.pos.x-timefactor*re.speed;
  13.   end;
  14.   if GetAsyncKeyState(vk_up) <> 0 then begin
  15.     Re.pos.y:=Re.pos.y-timefactor*re.speed;
  16.   end;
  17.   if GetAsyncKeyState(vk_down) <> 0 then begin
  18.     Re.pos.y:=Re.pos.y+timefactor*re.speed;
  19.   end;
  20. end;
  21.  

Re.Speed = 1.5, Jetzt...
Also schonmal Danke im voraus, ich hoffe dass ihr mir weiterhelfen könnt, ich hab jetzt echt kein Plan mehr, woran es liegen könnte.. SInd hoffentlich genug Informationen (an Code)..

mfg Spessi


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]