[英]Making an endless wave spawner that spawns harder enemies over time in Unity
[英]How to build a wave spawner that spawns 3 enemies with independent timers?
我目前正在 Unity 中構建 wave 基礎游戲,但目前陷入困境。 我的目標是讓 3 個敵人以不同的速度獨立生成。 我有一個大的 class 來管理 Waves,我在其中存儲數據,例如Enemy1Count (How many Enemy1 spawn) , Enemy1Rate (At which rate they spawn) 。 我希望第一個敵人每 2 秒產生一次,第二個敵人每 3 秒產生一次,第三個敵人每 5 秒產生一次,但是如果沒有計時器相互影響,我就無法做到這一點。 你知道我怎么能解決這個問題嗎? (我想管理一個班級內 3 個敵人的所有數據)
這似乎是一個你絕對可以使用Unity Coroutines的問題,你應該能夠為每個敵人運行一個協程,這樣它就會在 X 時間后產生一波。
像這樣的東西應該適用於你的邏輯
Coroutine c1, c2,c3;
bool keepSpawningEnemies = true;
Start(){
c1= StartCoroutine(SpawnWave(enemy1, 3.0f));
c2= StartCoroutine(SpawnWave(enemy2, 10.0f));
c3= StartCoroutine(SpawnWave(enmey3, 5.0f));
}
IEnumerator SpawnWave(Enemy enemy, float timeBetweenWaves)
{
while(keepSpawningEnemies ) {
SpawnWaveLogic(enemy);
yield return new WaitForSeconds(timeBetweenWaves);
}
}
Update() {
// logic to check if we need to keep spawning
// At some point you would run
keepSpawningEnemies = false;
}
我認為最簡單的方法是創建一個只負責處理一個波的組件,然后將該組件的三個實例添加到場景中。
public class Spawner : MonoBehaviour
{
[SerializeField] private Object prefab;
[SerializeField] private float spawnInterval;
private WaitForSeconds waitForNextSpawn;
private void Awake() => waitForNextSpawn = new WaitForSeconds(spawnInterval);
private void OnEnable() => StartCoroutine(SpawnLoop());
private void OnDisable() => StopCoroutine(SpawnLoop());
private IEnumerator SpawnLoop()
{
while(enabled)
{
yield return waitForNextSpawn;
Instantiate(prefab);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.