Spawn объектов

Программирование на Юнити.

Spawn объектов

Сообщение Telephonist 12 апр 2020, 11:53

Проблема заключается в проверке тайла, на то что он не занят юнитом. На тайле висит следующая функция:
Синтаксис:
Используется csharp
   
public bool IsClear()
    {
        Collider2D obstacle = Physics2D.OverlapCircle(transform.position, 0.2f, obstacleLayer);
        if (obstacle != null)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
 


После генерации поля начинаю спавн юнитов, при этом каждый раз для нового юнита вызываю функцию на "сборку" листа с тайлами, на которых он может заспауниться:
Синтаксис:
Используется csharp
    private void spawnCheckForRed()
    {
        for (int i = 0; i < childCount; i++)
        {
            if (parent.transform.GetChild(i).GetComponent<Tile>().IsClear() && parent.transform.GetChild(i).transform.position.x == length - 1 || parent.transform.GetChild(i).transform.position.x == length - 2)
            {
                tilesForRed.Add(parent.transform.GetChild(i).gameObject);
            }
        }
    }
 

сhildCount - переменная содержащая в себе колво детей объекта поле, на котором висят все тайлы.
tilesForRed - лист с тайлами, которые подходят для спауна юнита.
Сам спаун происходит следующей функцией:
Синтаксис:
Используется csharp
    private void spawnRed()
    {
        for (int i = 0; i < redUnitsToSpawn.Count; i++)
        {
            tilesForRed.Clear();
            spawnCheckForRed();
            GameObject toSpawn = tilesForRed[Random.Range(0, tilesForRed.Count)];
            Instantiate(redUnitsToSpawn[i], new Vector2(toSpawn.transform.position.x, toSpawn.transform.position.y), Quaternion.identity);
        }
    }
 

Переменная toSpawn берет случайный тайл из списка tilesForRed.
Собственно подозрение падает на строку if (parent.transform.GetChild(i).GetComponent<Tile>().IsClear(). По-моему проверка проходит с ошибкой. На всех юнитах висит слой "obstacles".
Подскажите, что делаю не так. Спасибо!
Telephonist
UNец
 
Сообщения: 24
Зарегистрирован: 08 апр 2019, 14:05

Re: Spawn объектов

Сообщение seaman 16 апр 2020, 13:50

Вокруг "ИЛИ" в if нужны скобки.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Spawn объектов

Сообщение Telephonist 16 апр 2020, 19:56

seaman писал(а):Вокруг "ИЛИ" в if нужны скобки.

Спасибо
Telephonist
UNец
 
Сообщения: 24
Зарегистрирован: 08 апр 2019, 14:05


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 8