Android Spawn Enemies的时间

时间:2012-08-28 16:27:05

标签: android

我正在开发一款能够随时间增加水平的游戏。同时也会增加产生的敌人数量,但是,我并不确切知道在哪里放置更新我的敌人的代码。

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

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

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

如果有人可以清楚地向我解释一切,我会非常感激。

2 个答案:

答案 0 :(得分:0)

也许你应该试试这个?

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

修改

如果你想增加难度,用变量替换3000 ..如:     int waitTime = 3000;

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

long gameStart = System.currentTimeMillis();

稍后检查:

if (timeEllaspsedSinceStart > howManySecondsTilLevelUp)
{
     waitTime -= howMuchLessYouWantToWait;
}

答案 1 :(得分: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!
}

}

我希望这有帮助!