1

次のようなコードがあります。

if there is a collision between player and enemy
    player.health--

私はこれをしたい:

if there is a collision between player and enemy
    player.health--
    wait for 3 seconds

これは、衝突を少し無視して、プレイヤーのヘルスがすぐに 0 にならないようにするためです。

これに何らかのタイマーを実装するにはどうすればよいですか?

4

1 に答える 1

2

動きをフリーズしないようにするには、このような新しいスレッドを開始する必要があります

private Thread invul;

if(collision && (invul==null || !invul.isAlive())){
    player.health--;
    invul=new Thread(){
        public void run(){
            Thread.sleep(3000);
        }
    };
    invul.start();
}

または、プレイヤーが攻撃された時間を節約する方が簡単かもしれません。

private long lastTimeHit= 0;

if(collision && System.currentTimeMillis() > lastTimeHit+3000){
    lastTimeHit= System.currentTimeMillis();
    player.health--;
}
于 2012-12-04T08:24:16.823 に答える