![]() |
Schussfrequenz
Hallo
Hab mal ne Frage bzgl. Timing. Nehmen wir mal an ich hab eine Waffe, welche eine Animation hat. Nun gibt es 2 Wege wie man eine geregelte Schusssequenz erzeugen kann 1. Man hat eine Variable die, wenn man die Feuertaste drückt in der Spielschleife hochgezählt wird bis ein bestimmter Wert erreicht ist. Dann ruft man die Schussprozedur auf. 2. Wie angesprochen hab ich eine Animation. Ich Frage nun wenn ich die Feuertaste drücke ab, ob die Animation läuft, wenn nicht dann schieße ansonsten mache nichts. Die Schussfrequenz hängt also von der Länge der Schussanimation ab Meine Frage: Gibt es nicht eine andere Möglichkeit, eine genauere und per Quellcode steuerbare Frequenz zu erzeugen? |
Re: Schussfrequenz
Schau dir mal Gettickcount an. Damit kannst du die Zeit messen. Musst hlat bei jedem Schuss eine variable setzen und bei jedem Tastendruck prüfen ob die Differenz groß genug ist für einen weiteren Schuss.
mfg, Ratte |
Re: Schussfrequenz
Zitat:
Delphi-Quellcode:
// beim Programmstart
X := GetTickCount; // X = LongWord // beim Tastendruck If GetTickCount - X >= 1000{1000ms=1s} Then Begin Schuß; X := GetTickCount; End; eine ander Möglichkeit wäre in Timer.
Delphi-Quellcode:
Bei Letztrem könnte man dann och sowas ganz leicht realisieren, wie Schuß-langePause-Schuß-kleinePause-Schuß-kleinePause...
//Taste wird gedrückt (dafür gibt's ja entsprechende Events)
Schuß; Timer.Enabled := True; //Taste wurde losgelassen Timer.Enabled := False; //Timer-Event Schuß;
Delphi-Quellcode:
//Taste wird gedrückt (dafür gibt's ja entsprechende Events)
Schuß; Timer.Interval := 1500; Timer.Enabled := True; //Taste wurde losgelassen Timer.Enabled := False; //Timer-Event Schuß; Timer.Interval := 500; |
Re: Schussfrequenz
Hey Danke für die schnellen Antworten
Habs folgendermaßen probiert
Delphi-Quellcode:
Aber immer wenn ich die Maus bewege, füllt er ohne Verzögerung die Listbox.. woran liegt das?
var
Form1: TForm1; x:longword; count:integer=0; implementation procedure TForm1.FormCreate(Sender: TObject); begin x := GetTickCount; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if GetTickCount - x >= 5000 Then begin listbox1.Items.Add('schuss '+inttostr(count)); inc(count); X := GetTickCount; end; end; |
Re: Schussfrequenz
Weil der für X warscheinlich den X-Wert der Maus nimmt, schlechte Vairablenüberlappung ^^
Ich wundere mich eher, warum der Compiler nicht gemeckert hat. Und die Windows-Zeit in ms ist warscheinlich immer größer als 1024+5000 ... Das wäre meine Idee. Nimm einfach einen anderen Variablennamen. Flare |
Re: Schussfrequenz
Oh mein Gott.. Schande über mein Haupt, habs echt übersehen, es lag natürlich an dem x..
Es funktioniert aber so perfekt!! danke euch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 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-2025 by Thomas Breitkreuz