Единство порождает врагов
В настоящее время у меня есть система порождения, которая порождает Легких, а затем средних врагов, но я получаю Массив из-за ошибки дальности, и это только порождает 4 врагов. Я хочу, чтобы х20 легко (или общее число) х20 среднего, а затем случайным образом между (легкий, средний и жесткий врагов.)
Это мой код
public GameObject[] enemy;
public Transform[] spawnPoints;
private float timer = 2;
int index = 0 ;
int wave = 0;
List <GameObject> EnemiesList = new List<GameObject>();
private int enemyCount=20;
void Update()
{
timer -= Time.deltaTime;
if (timer <= 0 && wave < 6)
{
timer = 3;
if (wave != 0 && wave % 2 == 0)
{
index ++ ;
}
EnemySpawner();
wave++;
}
}
void Spawn ()
{
for (int i = 0; i<enemyCount;i++)
{
Invoke("EnemySpawner" , i + 2);
}
}
void EnemySpawner ()
{
int spawnPointIndex = Random.Range (0, spawnPoints.Length);
GameObject InstanceEnemies= Instantiate ( enemy[index] , spawnPoints[spawnPointIndex].position , spawnPoints[spawnPointIndex].rotation) as GameObject;
EnemiesList.Add(InstanceEnemies);
}
}
1 ответ
Исключение может исходить от врага [index], ваш код использует индекс 0, 1, 2. Есть ли 3 GameObjects, рекомендованных врагу []?
или же
spawnPoints[spawnPointIndex] может быть пустым, так что spawnPoints[0] приведет к этому исключению. Есть ли хотя бы одно преобразование в spawnPoints[]?
Чтобы предотвратить исключение, вы можете сделать что-то вроде этого:
if ( index > 0 && index < enemy.Length && spawnPointIndex > 0 && spawnPointIndex < spawnPoints.Length )
{
GameObject InstanceEnemies= Instantiate ( enemy[index] , spawnPoints[spawnPointIndex].position , spawnPoints[spawnPointIndex].rotation) as GameObject;
EnemiesList.Add(InstanceEnemies);
}