-1

我正在开发一款随时间增加等级的游戏。也增加了产生的敌人的数量,但是,我真的不知道在哪里放置更新我的敌人的代码。

我在使用时间作为参考时遇到问题,我创建了一个 Time 类,它存储 beginTime(System.currenttimemillis) 和 timediff(System.currenttimemillis-beginTime),我在我的线程类中实例化它们,所以它将获得游戏的当前时间状态,但是,当我在我的游戏面板类中特别是在更新方法中使用它时,当比较它存储的值时,即使它有一个值,它也会忽略条件。

if(time.getTimeDiff()==3000){
    enemy.update();
}

游戏应该在 3 秒后开始,但是如果我设置条件,即使我设置了 1 个假人也不会出现敌人。

如果有人能清楚地解释我的一切,我会真的很感激。

4

2 回答 2

0

也许你应该试试这个?

if (System.currentTimeMillis() - start > 3000)
{
   updateEnemy();
   start = System.currentTimeMillis();
}

编辑

如果要增加难度,请将 3000 替换为变量.. 比如:int waitTime = 3000;

然后得到游戏的开始时间。

long gameStart = System.currentTimeMillis();

稍后检查:

if (timeEllaspsedSinceStart > howManySecondsTilLevelUp)
{
     waitTime -= howMuchLessYouWantToWait;
}
于 2012-08-28T16:37:50.857 回答
0

这对我有用:

这是我编写的一个用作计时器的类:

public class Timer {

    Long startTime;
    int delayTime;

    public Timer() {

    }

    public Timer(int delayTime) {
        this.delayTime = delayTime;

    }

    public void setDelayTime(int delayTime) {
        this.delayTime = delayTime;

    }

    public boolean delay() {
        if(this.startTime == null) {
            this.startTime = System.currentTimeMillis();
        }

        if(startTime + this.delayTime < System.currentTimeMillis()) {
            this.startTime = null;
            return true;
        }
        else {
            return false;
        }

    }

    public void reset() {
        this.startTime = System.currentTimeMillis();

    }


}

现在在您的更新方法中,您可以检查是否应该像这样生成新敌人:

Timer spawnEnemyTimer = new Timer(5000); // 5 seconds

public void update() {
if(spawnEnemyTimer.update() == true) {
// spawn new enemy!
// Timer will automatically reset!
}

}

我希望这有帮助!

于 2012-08-28T16:59:30.827 回答