Ich benutze ein Timing-System, wo ich Delta (die Anzahl der Millisekunden, die jedes Bild, 60 fps) passiert.Wie verwende ich Delta-Millisekunden, um alle x Millisekunden etwas zu tun?
Bevor ich Timing verwendet, zählte ich die Rahmen und tat etwas wie folgt aus:
if(frames % 60 == 0) /*do something*/;
frames++;
Aber ich kann nicht die gleiche Sache mit Delta verwenden:
if(milliseconds % 1000 == 0) /*do something*/;
milliseconds += delta;
Delta ändert sich jedes Mal, und Millisekunden werden nicht genau ein Vielfaches von 1000 pro Sekunde sein.
(Ich bin mit Java, aber das ist nicht wirklich relevant.)
Edit:
Die if (Millisekunden - prev_milliseconds> = 1000) von Stas Makutin zum größten Teil funktioniert. Aber in einem Teil meines Codes, gibt es so etwas wie diese:
if(frames % 60 == 0){
...
}
if(frames % 60 == 30){
...
}
if(frames % 40 == 0){
...
}
Gibt es eine Möglichkeit, dies zu tun, ohne prev_millisecond1, prev_millisecond2 usw.
Ich habe nur Frames gezählt, aber ich wollte genaueres Timing hinzufügen (weil mein Programm auf verschiedenen Computern mit unterschiedlichen Geschwindigkeiten läuft). Die Geschwindigkeit, mit der sich alle Objekte bewegen, war früher Pixel/Frames, aber jetzt ändere ich alles auf Pixel/Sekunden. – user1221546