我正在开发一款能够随时间增加水平的游戏。同时也会增加产生的敌人数量,但是,我并不确切知道在哪里放置更新我的敌人的代码。
我在使用时间作为参考时出现问题,我创建了一个Time类,它存储了beginTime(System.currenttimemillis)和timediff(System.currenttimemillis-beginTime),并在我的线程类中实例化它们因此,它将获得游戏的当前时间状态,但是,当我在我的游戏面板类中使用它时,特别是在更新方法中,当比较它存储的值时,即使它具有值,它也会忽略条件。 / p>
if(time.getTimeDiff()==3000){
enemy.update();
}
游戏应该在3秒后开始,但是如果我提出这个条件,即使我设置了1个假人也没有敌人会来。
如果有人可以清楚地向我解释一切,我会非常感激。答案 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!
}
}
我希望这有帮助!