@PurgaBot

Как мне получить все объекты, падающие на зону триггера?

Я хочу получить массив и заставить не спавнится объекты при определенном количестве попадании в зону
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
@Andrei1805
В скрипте объекта должна лежать какая то public переменная in_zone, которая по умолчанию false. Также объект надо как-то узнавать, например по тэгу, но можно придумать много других способов. Например скрипт у объекта называется object_skript. Тогда в скрипте зоны:

List<GameObject>  objects;
void OnTriggerEnter(Collider other)
{
    if(other.tag == "object") //Можно выбрать любой тэг
    {
        if(!other.GetComponent<object_skript>().in_zone) // проверка не в зоне ли уже объект
        {
            other.GetComponent<object_skript>().in_zone = true; // объект попал в зону
            objects.Add(new GameObject());
            objects[objects.Count - 1] = other.gameObject; // Добавление в лист нового компонента
        }
    }
}


Ну и дальше там можно смотреть на objects.Count и сравнивать его с чем надо. Также если где-то будет удаление объектов из листа, то в листе будут возникать позиции с null, тогда добавление в лист лучше написать так:

bool x = true;
for(int i = 0; i < objects.Count;)
{
   if(objects[i] == null)
   {
       x = false;
       objects[i] = other.gameObject;
       other.GetComponent<object_skript>().in_zone = true;
       break;
   }
   ++i;
}
if(x)
{
   other.GetComponent<object_skript>().in_zone = true;
   objects.Add(new GameObject());
   objects[objects.Count - 1] = other.gameObject;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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