Показать сообщение отдельно
Старый 15.11.2020, 15:23   #179
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Проблемы разработки от EvilOkta

Кстати по поводу событий и прочего. Я знаю, что плохая практика в Update постоянно проверять кучу состояний для управления объектом, но возник следующий вопрос. Попробую объяснить.
Допустим есть NPC, у него есть методы, отвечающие за различные "действия" - идти, сесть, стоять и т.п. Все эти методы выведены под общую сигнатуру, для того чтобы ими можно было бы управлять через события и т.п.
Но в чем подвох. Например метод "идти" получает точку назначения и включает NavAgent типа так:
NPCPathFinder.SetDestination(Target.transform.position); 
NPC начинает идти к цели - все отлично, но метод Walk по факту исполнен включением SetDestination, хотя NPC продолжает идти (я так и не разобрался, получается НавАгент работает асинхронно?). Допустим следующий метод после достижения цели должен быть "Стоять", и если формировать список методов для исполнения на основе делегата или списка методов, они сработают последовательно, т.е. установка цели -> метод Walk исполнен -> метод "стоять" (хотя NPC не дошел до цели). Это естественно неправильно.
Какие есть способы управления такими последовательностями?
У меня пока в голове только идея сделать какой-то промежуточный менеджер, который в апдейте каждую итерацию (что уже заставляет задуматься) проверяет достиг ли активный метод цели и если да, то активировать следующий в цепочке метод. Это нормальная практика, или костыли?
Надеюсь правильно объяснил задачу.
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием