我想用libgdx做一个简单的游戏。我坚持的一件事是让敌人在特定时间产卵。如果我做类似在特定时间实例化类
if (t == 10)
new Enemy();
我可能会错过这个特定时间或者可能产生两次同一个敌人。我现在所拥有的是一样的东西
float t = 0
float timeElapsed = 0;
update (float delta) {
timeElapsed += getDeltaTime();
if (timeElapsed > 0.1) {
t++;
timeElapsed = 0;
}
}
这让我在T秒十分之一的大致经过的时间,但它确实不觉得我应该这样做的方式。
谢谢,我以前试过这个解决方案。我认为你谈到的链表会是一个更好的方法,因为我将会使用很多对象。我想我会有一个链接,有一个时间递减,直到它达到零,然后移动到列表中的下一个元素。每个元素也会有一个同时产生的敌人列表,如果我需要延迟,它将是空白的。 – russjohnson09
听起来像一个很好的方法 - 你也可以通过让一个行中的多个敌人与时间== 0保持一个列表。 另外请注意,你可能不得不改变你的实例化语义(例如,通过向敌人类添加.spawn()方法而不是在构造函数中产卵),因为如果你想保留一个敌人列表,你需要在列表创建时实例化敌人(或使用某种工厂模式)。 – sqweek
我实际上最终使用了一个链接列表,其中每个节点都是敌人和延迟。敌人被实例化并添加到链表中,但在到达之前不会变为活动状态。然后将它们存储在一系列活跃的敌人中。这里是[github](https://github.com/russjohnson09/bullethell)给任何可能感兴趣的人。 – russjohnson09