Доброго времени суток.
Собственно вот и я пришел на ваш форум поскольку начал осваивать Unity. За тупые вопросы сильно не пинайте, поскольку изучаю Unity всего месяц, притом месяц же изучаю и C#(более того не программер, в молодости учил только C++ и то дальше простеньких программ не пошло), поэтому вопросы могут быть весьма тупыми. И то и другое изучаю на боевую, т.е. пишу простенькую игрушку.
Итак собственно вводные:
Есть объект игрока, есть объект врага и есть объект растения. Урон наноситься игроком врагу или растению и врагом всем остальным Урон наноситься непосредственным контактом. Если рассматривать коллизию 1:1 то проблем написать такой код у меня нет, есть проблема с написанием кода 1:многим. Моя цель выбрать из всех объектов с которыми я столкнулся один, с минимальным значением одной из переменных экземпляра объекта, а для этого мне нужно получить количество объектов с которым столкнулся мой игрок.
Вот кусок кода:
void OnCollisionEnter2D(Collision2D coll)
{
// Получаем количество коллизий.
int count = coll.contacts.Length;
//Объявляем переменную объекта.
GameObject ob;
//Объявляем переменную объекта с минимальным hp.
GameObject minHpOb;
Debug.Log("Количество коллизий : " + coll);
//Задаем цикл в котором перебираем всех противников
for (int i = 0; i < coll; i++)
{
//выбираем только объекты с тегами Plant, Player, Enemy
if (coll.contacts[i].collider.gameObject.tag == "Plant" || coll.contacts[i].collider.gameObject.tag == "Player" || coll.contacts[i].collider.gameObject.tag == "Enemy")
{
//Получаем GameObject и присваиваем переменной.
ob = coll.contacts[i].collider.gameObject;
Debug.Log("Имя объекта с которым столкнулись : " + ob);
//первое присваивание minHpOb объекту ob.
if (minHpOb = null)
{
minHpOb = ob;
}
Тут то и возникла главная моя проблема. Как я понимаю функции OnCollisionEnter2D и OnCollisionStay2D обрабатываются для каждой коллизии отдельно. Т.е. по факту переменная count = coll.contacts.Length; будет всегда равна 1(хотя вроде как до 5 версии все работало правильно и выдавалось именно общее количество коллизий). Собственно из этого и вытекают мои вопросы.
1. Мне собственно нужно получить количество объектов с которыми столкнулся объект игрока. Что почитать? Офф. справку читал, но если честно мало, что понял в данном конкретном вопросе.
2.OnCollisionExit2D срабатывает при любом выходе из коллизии даже в случае множественных коллизий(т.е. если из нескольких действующих коллизий одна прервалась)?
Готовых решений не ищу, скорей нужен совет, что почитать или как лучше реализовать в плане логики алгоритм получения количества коллизий, если выбранный мной простой путь не работает или в корне не верен.
Заранее спасибо!