AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ruckeln beim verschieben eines Raumschiffs
Thema durchsuchen
Ansicht
Themen-Optionen

Ruckeln beim verschieben eines Raumschiffs

Ein Thema von Nils_13 · begonnen am 13. Okt 2005 · letzter Beitrag vom 14. Okt 2005
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

Ruckeln beim verschieben eines Raumschiffs

  Alt 13. Okt 2005, 16:55
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;
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#2

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 13. Okt 2005, 17:08
hallo,

Delphi-Quellcode:
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;
so besser?

wenn nicht, wäre ein bisschen mehr code noch nützlich. der code oben hat ja noch nicht viel mit raumschiff zu tun
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 13. Okt 2005, 17:15
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
Michael
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#4

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 13. Okt 2005, 17:16
ah ich idiot Das Raumschiff soll sich schnell, ohne Ruckeln bewegen.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#5

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 14. Okt 2005, 09:46
Keine Idee ?
Ich hab den ersten Betrag erweitert:
Zitat von Nils:
Das Raumschiff soll sich (man muss ja auch schnell vor schüssen etc. ausweichen) schnell und flutschig bewegen können.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 14. Okt 2005, 10:04
Nimm einen Timer, aber wenns geht einen genaueren als TTimer. Dort prüfst du immer, ob die Taste gedrückt ist:

Delphi-Quellcode:
if GetKeyState(VK_LEFT)<0 then
  // Taste ist gedrückt
Zusätzlich machst Leftp als Double und erhöhst nicht um 1 sonder um 0.1 oder so. Musst bissle damit rumprobieren.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#7

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 14. Okt 2005, 13:16
Zitat von jim_raynor:
Nimm einen Timer, aber wenns geht einen genaueren als TTimer. Dort prüfst du immer, ob die Taste gedrückt ist:

Delphi-Quellcode:
if GetKeyState(VK_LEFT)<0 then
  // Taste ist gedrückt
Zusätzlich machst Leftp als Double und erhöhst nicht um 1 sonder um 0.1 oder so. Musst bissle damit rumprobieren.
Allgemein schon viel besser, thx. Nur was verstehst du unter genauerem Timer ? Wo krieg ich einen her ?
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Ruckeln beim verschieben eines Raumschiffs

  Alt 14. Okt 2005, 13:42
Zitat von Nils_13:
Allgemein schon viel besser, thx. Nur was verstehst du unter genauerem Timer ? Wo krieg ich einen her ?
Nun der Standardtimer hat nur eine Auflösung von 50ms und deshalb sehr ungenau. Zum Beispiel ist bei DelphiX ein Timer dabei, der genauer sein soll. Aber mir kam ja nach dem Beitrag noch ne andere Variante. Du kannst ja die Abfrage in deiner Spielschleife machen (Stichwort: Zeitabhängige Bewegungen). Solltest ja genug dazu im Forum hier finden. Du misst mit Hier im Forum suchenQueryPerformanceCounter zwischen zwei Abfragen und anhand derer erhöhst / verringerst du LeftP. Also zum Beispiel:

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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz