setze eine Verzögerung im libgdx Spiel

7

Ich habe ein Spiel (wie Superspringer, dieses Spiel ist ein Springspiel), das unser Charakter Leben hat. Nach der Kollision mit Feinden verringert sich sein Leben. und ich will nach 1 sek die kollisionen berechnen. Ich meine in dieser 1 Sekunde, wenn mein Charakter Kontakt mit Feinden hat, passiert nichts und er setzt seinen Weg fort. Dazu definiere ich eine boolesche Variable in meiner GameScreen-Klasse namens "collision" und eine andere in der Klasse "World" namens "collBirds". nach einem Kontakt mit feindlichen Kollision und collBirds ändern sich zu wahr. aber ich will nach 1 sek kollision wechseln zu false. Ich benutze verschiedene Dinge wie System.currentTimeMillis () und "for loop", und nichts passiert. Ich bin nicht so gut in Java.

das ist meine Bedingung:

%Vor%     
Hosein 29.05.2012, 11:45
quelle

3 Antworten

32

In einigen Fällen können Sie auch com.badlogic.gdx.utils.Timer

verwenden

Beispielverwendung:

%Vor%     
Glogo 19.04.2013 09:13
quelle
6

Wenn die erste Kollision auftritt, legen Sie float timeSinceCollision = 0;

fest

Dann müssen Sie für jede Schleife die Zeit seit der letzten Überprüfung der Variablen hinzufügen und prüfen, ob sie länger als eine Sekunde ist.

%Vor%     
Matsemann 29.05.2012 12:30
quelle
0

Wenn Sie dies in demselben Thread tun möchten, können Sie Thread.sleep () verwenden. Aber in diesem Fall wird dein aktueller Thread einfrieren und wenn dies ein Single-Thread-Spiel ist, wird dein gesamtes Spiel einfrieren. Wenn du nicht möchtest, dass dein Spiel für 1 Sekunde einfriert, solltest du den Thread spawnen und in diesem Thread den Schlaf und nach dem Schlaf aufrufen, ändere das Flag

    
ejb_guy 29.05.2012 11:51
quelle

Tags und Links