@SilNux

Не могу сделать спавн разных объектов в разных позициях, в чем может быть проблема?

Пробовал разные способы, но этот единственный работал. В какой-то момент все равно ломается и выдает ошибку:

IndexOutOfRangeException: Index was outside the bounds of the array.

Вот код в котором ошибка:

public class spawnEnemy : MonoBehaviour
{
    public Transform[] spawnPlace;

    public GameObject[] spriteEnemy; 

    void Start()
    {
        
    }

    void FixedUpdate()
    {
        WaitSpawn();
    }

    public void WaitSpawn()
    {

        Transform position = spawnPlace[Random.Range(0, spawnPlace.Length)];
        GameObject enemySquare = spriteEnemy[Random.Range(0, spriteEnemy.Length)];
        GameObject enemy = Instantiate(enemySquare, position.position, Quaternion.identity);
    }

}
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
@SilNux Автор вопроса
Думал что проблема в рандоме, проверил через Debug.log, оказалось, массив не всегда заполнялся объектами. Из-за этого ошибку и выдавал. Сделал проверку на наличие объектов, все работает.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
freeExec
@freeExec
Участник OpenStreetMap
Где-то вы забыли добавить в массив объекты, вот вам рандом выдаёт нулевой элемент, а его там нет.
Ответ написан
@reLse
Попробуй проверку != null сделать
Ответ написан
@NIKROTOS
Начинающий программист.
Transform position = spawnPlace[Random.Range(0, spawnPlace.Length)];
Значит, что вы выбираете рандомную позицию из заранее заданных, где вы их задаёте?
Кстати Length выдаёт колличество объектов в массиве. а не номер последнего объекта(различаются на 1)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы