![]() |
Ruckeln beim verschieben eines Raumschiffs
Hi,
wenn ich die linke oder rechte Pfeiltaste drücke, ruckelt es. DoubleBuffered hilft auch nicht. Kennt ihr eine Lösung oder andere Methode ? Es handelt sich hierbei um OpenGL. Das Raumschiff soll sich (man muss ja auch schnell vor schüssen etc. ausweichen) schnell und flutschig bewegen können.
Delphi-Quellcode:
var
Leftp : integer; { ... } procedure TGLForm.Render(Sender : TObject; var Done : Boolean); { ... } // Position glTranslatef(Leftp, 240, 0); { ... } end; { ... } procedure TGLForm.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RIGHT then Leftp := Leftp + 1 + 1; if Key = VK_LEFT then Leftp := Leftp - 1 - 1; end; |
Re: Ruckeln beim verschieben eines Raumschiffs
hallo,
Delphi-Quellcode:
so besser?
procedure TGLForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_RIGHT then Leftp := Leftp + 1; if Key = VK_LEFT then Leftp := Leftp - 1; end; wenn nicht, wäre ein bisschen mehr code noch nützlich. der code oben hat ja noch nicht viel mit raumschiff zu tun :gruebel: |
Re: Ruckeln beim verschieben eines Raumschiffs
Also du solltest schon hinschreiben das du mit OpenGL arbeitest.. weil das habe ich z.B nur durch glTranslatef gesehn..auf den zweiten Blick.. und ich glaube zwischen DelphiX, Windows Kompos und OpenGl ist ein großer Unterschied ;)
Außerdem finde ich die Sparte etwas unpassend. Multimedia (Grafik, Audio, Video, Spiele, Design, DirectX, OpenGL, MP3) <-- steht bei der beschreibung von Multimedia, passt da wohl besser ;) |
Re: Ruckeln beim verschieben eines Raumschiffs
ah ich idiot :wall: Das Raumschiff soll sich schnell, ohne Ruckeln bewegen.
|
Re: Ruckeln beim verschieben eines Raumschiffs
Keine Idee :( ?
Ich hab den ersten Betrag erweitert: Zitat:
|
Re: Ruckeln beim verschieben eines Raumschiffs
Nimm einen Timer, aber wenns geht einen genaueren als TTimer. Dort prüfst du immer, ob die Taste gedrückt ist:
Delphi-Quellcode:
Zusätzlich machst Leftp als Double und erhöhst nicht um 1 sonder um 0.1 oder so. Musst bissle damit rumprobieren.
if GetKeyState(VK_LEFT)<0 then
// Taste ist gedrückt |
Re: Ruckeln beim verschieben eines Raumschiffs
Zitat:
|
Re: Ruckeln beim verschieben eines Raumschiffs
Zitat:
![]() Das Raumschiff bewegt sich in 1s um 1 Feld (LeftP+1). Durch die Zeitmessung stellst du jetzt fest, dass seid dem letzten durchlauf 10ms vergangen sind. Also würdest du LeftP nur um 0.01 erhöhen. Bei 20ms dann entsprechend 0.02. QueryPerformanceCounter sollte man deshalb nehmen, weil dieser schon sehr genau ist. Auf jeden Fall wesentlich genauer als GetTickCount. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz