Логика поведения стенка на стенку..

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

Логика поведения стенка на стенку..

Сообщение vave 14 мар 2017, 08:53

Всем снова привет! Только недавно начал изучать C# и Unity - многого не знаю, возможно вопрос покажется слишком простым но, я уже голову сломал...
Допустим есть сцена где скрипт спавнер генерит мобов с 2х сторон(допустим синие и красные) - они идут по прямой к определенной цели - у каждой команды своя (допустим база противника точка спавна и тд.) какова должна быть логика каждого отдельного моба и как ее обрабатывать?!

в мобе есть 2 дочерних объекта без сетки с тригером: тригер большой - зона видимости врагов и маленький зона атаки(мили совсем маленький, рэйнджет побольше)...

как пытаюсь сделать я.... есть занятие по умолчанию(если моб больше ничем не занят идти к конечной целе - базе)
есть событие увидел 1го врага (по большому тригеру)
действие все бросить и бежать к нему пока не заденет маленьким триером
начать бой и если противник погиб, получить опыт, искать нового и бежать к нему
если в зоне видимости врагов нет - занятие по умолчанию - идем крушить базу...
...возможно логика правильная НО что куда и как пихать?!
у моба у меня сделано 2 класса - класс с переменными (статами и биндами(материалы, таргет по умолчанию скорость и тд...)) и класс с поведением, так вот как раскидать логику?
я думл в update свичем перебирать поведение а триеры задают значения для кейса( например 1 = увидел, 2 догнал, 3 бой, 0 - по умолчанию)? возможно есть способ попроще? через делегаты например? подскажите как реализовать? где-то видел что всех врагов на счене нужно собрать в массив и выбирать по приоритетам? где-то, что нужно использовать "Общую память"...
пс. как сделать чтобы мобы не проходили сквозь друг друга а обходили своих?
vave
UNец
 
Сообщения: 17
Зарегистрирован: 13 мар 2017, 06:00

Re: Логика поведения стенка на стенку..

Сообщение Tolking 14 мар 2017, 09:54

Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Логика поведения стенка на стенку..

Сообщение vave 14 мар 2017, 10:32

Только недавно начал изучать C# и Unity - многого не знаю...
vave
UNец
 
Сообщения: 17
Зарегистрирован: 13 мар 2017, 06:00

Re: Логика поведения стенка на стенку..

Сообщение Zamarrus 14 мар 2017, 11:01

Привет мой дорогой друг. Я постараюсь ответить на твой вопрос. Во первых : Сделай меш коллайдер на мобах. Во вторых : Пусти лучь(ray) из каждого(у них явно будет висеть один и тот же скрипт, так что не пугайся). В третьих : сделай Лист с имеющимися на сцене мобами
List<Mob> Mobs = new List<Mob>(); и в методе Update() сделай Mobs = GameObject.FindGameObjectsWithTag("Mob") - так каждый моб будет знать расположение всех мобов на карте. На Четвертый : создай цель Transform Trigger, сделай проверку в FixedUdate() if(Vector3.Distance([позиция этого моба],[позиция другого моба]) < 10) то Trigger = [другой моб].transform; и если Trigger != null то моб бежит к противнику который и есть Trigger. А раз у тебя на всех колайдер то и проходить через друг друга они не будут так как с помощью луча можно определить есть ли впереди кто-то. Надеюсь помог, это лично мой метод ИИ.
Zamarrus
UNец
 
Сообщения: 28
Зарегистрирован: 01 фев 2017, 16:07

Re: Логика поведения стенка на стенку..

Сообщение vave 14 мар 2017, 12:07

Спасибо - обязательно попробую. если зайду в тупик - напишу)
vave
UNец
 
Сообщения: 17
Зарегистрирован: 13 мар 2017, 06:00


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6