Итак, я работаю в SpawnController для моей игры Unity. Я хочу порождать случайный тип врага в случайной позиции.
В настоящее время у меня есть два метода рандомизации позиции появления:
В верхней части экрана:
void SpawnTop(IEnumerator spawnMethod)
{
//There's 4 positions on plane X where the enemy can spawn
randomXSpawnSection[0] = Random.Range(-13f, -6.5f);
randomXSpawnSection[1] = Random.Range(-6.5f, 0f);
randomXSpawnSection[2] = Random.Range(0f, 6.5f);
randomXSpawnSection[3] = Random.Range(6.5f, 13.1f);
StartCoroutine(spawnMethod);
}
А со стороны экрана:
void SpawnSide(IEnumerator spawnMethod)
{
//There's 4 positions on plane Z where the enemy can spawn
randomZSpawnSection[0] = Random.Range(-7f, 1.5f);
randomZSpawnSection[1] = Random.Range(1.5f, 10f);
randomZSpawnSection[2] = Random.Range(10f, 18.5f);
randomZSpawnSection[3] = Random.Range(18.5f, 27.1f);
StartCoroutine(spawnMethod);
}
Оба эти метода используют в качестве параметра другой метод, который создает экземпляр определенного типа врага, подобного этому:
IEnumerator SpawnEnemyGunner(float randXSpawn, float randTimeSpawn)
{
yield return new WaitForSeconds(randTimeSpawn);
randZSpawn = Random.Range(24, 30);
Instantiate(enemyGunner, new Vector3(randXSpawn, 1.5f, randZSpawn), enemyGunner.transform.rotation);
spawning = false;
}
У меня есть несколько врагов в игре, поэтому несколько из этих методов.
Пример вызова вложенных методов без их рандомизации:
SpawnTop(SpawnEnemyGunner(Random.Range(0, randomXSpawnSection.Length), Random.Range(3, 6)));
Я хочу рандомизировать метод и его параметр метода.