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 回答