Добавлен Mangysta
Здравствуйте.
Могу ли я найти все объекты уже входящие в триггер и записать их в массив? Такое не сложно делать если объекты входят и выходят из триггера. При OnTriggerEnter2D объект записывается, а при OnTriggerExit2D удаляется. Но мне бы реализовать запись при OnTriggerStay2D, нужно найти объекты с определённым уровнем или тегом, а затем упорядочить и записать. Единственное что мне пришло в голову это пустить какой нибудь луч в пределах триггера, который проверял бы теги объектов на которые он наткнётся. Если это нормальное решение, то подскажите функции которые могут в этом помочь, если же нет то подскажите в каком направлении можно поискать решение.
Заранее благодарен.
Принятый ответ
Если я правильно понял, ты хочешь добавить в какой-либо массив юнита, который находится в триггере и соответствует некоторым условиям ( в данном случае tag = "Tag" и lvl = 5) ? Я тут использовал лист, т.к. с ним удобнее работать, но при желании ты можешь юзать статический массив.
код
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Test : MonoBehaviour {
public List<GameObject> Units = new List<GameObject>();
void OnTriggerStay2D(Collider2D col)
{
if (col.tag == "Tag" || col.GetComponent<MyComponent>().lvl == 5)
{
Units.Add(col.gameObject);
}
}
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Raised
Отредактирован Mangysta
Тем временем я решил проблему тем что задал триггер в виде тонкой полоски, который поворачивал на 180 градусов (нужно было найти объекты по радиусу). За первый заход посчитал количество объектов через тот же OnTriggerEnter2D и задал размер массива, а за второй заполнил его.