Я сейчас создаю игру, в которой я хочу породить множество разных врагов. В настоящее время у меня есть много контейнеров данных для модулей, которые я создаю с помощью ScriptableObjects. Эти юниты содержат разные виды данных, такие как HP, добыча, урон и т. Д. Я думал о добавлении другого типа данных, который будет их индивидуальным% к порождению или что-то подобное, но я немного застрял, не зная, как реализовать что-то вроде того.
Вот мой текущий код, в котором я порождаю врагов, полностью рандомизированных из двух разных списков врагов ближнего и дальнего боя.
IEnumerator SpawnEnemies()
{
//Spawn enemies while amount of enemies are under predetermined enemy amount.
while (spawnedEnemies < totalEnemiesInCurrentWave)
{
//Randomize if Melee or Ranged enemy.
whichEnemyType = Random.Range(0, 2);
GameObject enemy = waves[currentWave].enemyPrefab[whichEnemyType];
spawnedEnemies++;
enemiesInWaveLeft++;
//Can I get a probability % to spawn each enemy? Currently completely random.
switch (whichEnemyType)
{
case 0:
GameObject Melee = Instantiate(enemy, spawnPoint.position, Quaternion.identity);
Melee.GetComponent<Melee>().unit = meleeUnits[Random.Range(0, meleeUnits.Count)];
break;
case 1:
GameObject Ranged = Instantiate(enemy, spawnPoint.position, Quaternion.identity);
Ranged.GetComponent<Ranged>().unit = rangedUnits[Random.Range(0, rangedUnits.Count)];
break;
default:
break;
}
yield return new WaitForSeconds(timeBetweenEnemies);
}
yield return null;
}
Может ли кто-нибудь указать мне лучший способ справиться со случайными врагами или, если возможно, дать мне какую-то идею, как это сделать.
Спасибо.