[英]in TowerDefence Code,for spawning enemies
我想在同一個敵人波中產生多個敵人,也許有人可以幫助......在 C# 的新手中。
這就是現在使用的代碼:
public class WaveSpawner_2 : MonoBehaviour
{
public static int EnemiesAlive = 0;
public Wave2[] waves;
public Transform spawnPoint;
public float timeBetweenWaves = 5f;
[SerializeField] TextMeshProUGUI waveCountDownText;
public GameManager gameManager;
float countDown = 2f;
int waveIndex = 0;
void Start()
{
EnemiesAlive = 0;
}
private void Update()
{
if(EnemiesAlive > 0)
{
return;
}
if (waveIndex == waves.Length)
{
gameManager.WinLevel();
this.enabled = false;
}
if(countDown <= 0f)
{
StartCoroutine(SpawnWave());
countDown = timeBetweenWaves;
return;
}
countDown -= Time.deltaTime;
countDown = Mathf.Clamp(countDown, 0f, Mathf.Infinity);
waveCountDownText.text = string.Format("{0:00.00}", countDown);
}
IEnumerator SpawnWave ()
{
PlayerStats.Rounds++;
Wave2 wave = waves[waveIndex];
EnemiesAlive = wave.count;
for (int i = 0; i < wave.count; i++)
{
SpawnEnemy(wave.enemy);
yield return new WaitForSeconds(1f / wave.rate);
}
waveIndex++;
}
void SpawnEnemy(GameObject enemy)
{
Instantiate(enemy, spawnPoint.position, spawnPoint.rotation);
EnemiesAlive++;
}
}
這就是第二個 class:
[System.Serializable]
public class Wave2
{
[Header("DeafultEnemy")]
public GameObject enemy;
public int count;
public float rate;
}
我一直在尋找 2 天的解決方案,但找不到一個..我是 c# 的新手,所以也許我確實找到了它但不明白......在這里試試運氣,謝謝。
我不確定在同一波產生多個敵人是什么意思,對於代碼來說,它看起來像你每隔幾個游戲時間就產生一個敵人,如果是這樣,為什么不調用 SpawnEnemy 來實例化多個敵人?
實現此目標的最簡單方法是將 Wave2 內部的 GameObject 敵人更改為數組。
[Serializable]
public class WaveData
{
public GameObject[] prefabs;
public int count;
public float rate;
}
然后在 SpawnWave 內部,您可以使用 prefabs 數組來獲取隨機的 prefab、在 prefab 之間交替或其他一些挑選算法。
for (int i = 0; i < wave.count; i++)
{
// Getting a random enemy
var enemyToSpawn = wave.prefabs[Random.Range(0, wave.prefabs.Length)];
SpawnEnemy(enemyToSpawn);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.