我有一些看起来像这样的代码:
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。
我将如何为此实现某种计时器?
我有一些看起来像这样的代码:
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。
我将如何为此实现某种计时器?
要不冻结运动,您必须像这样开始一个新线程
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--;
}