Java 如何记录时间(让玩家忽略伤害3秒)?
我有一些代码如下所示:Java 如何记录时间(让玩家忽略伤害3秒)?,java,Java,我有一些代码如下所示: 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 我该如何实现某种计时器呢 要不冻结移动,您必须启动一个新线程,如下所示 priv
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--;
}
Thread.sleep(3000)
是一个选项。第一个解决方案还允许添加一些动画:public void run(){player.blinking=true;Thread.sleep(3000);我不认为旋转线程来实现这一点是最佳的解决方案。我个人会做一些类似于player的事情。在存储时间之前不会受到伤害。这也可以解释为一种视觉提示。