我想用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