Страница 1 из 1

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

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

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

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

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

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

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

СообщениеДобавлено: 14 мар 2017, 10:32
vave
Только недавно начал изучать C# и Unity - многого не знаю...

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

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

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

СообщениеДобавлено: 14 мар 2017, 12:07
vave
Спасибо - обязательно попробую. если зайду в тупик - напишу)