решения через raycast , но посмотрел видео 6 лет давности и относительно новые, ничего особо не изменилось. я так понимаю это самое оптимальное сейчас?
отправляем луч от нпс, если он сталкивается с чем то, чекаем что это за объект и если он имеет слой игрок, то значит это игрок
https://youtu.be/rQG9aUWarwE https://youtu.be/j1-OyLo77ss
да. Но это не оптимально. рейкасты вещь тяжелая. Если юнитов много то это беда. Я бы использовал 1 рейкат. от 1 . юнита, который всегда направлен на игрока. Если появляется прямая видимость. Проходим по условию реагирования, например в области 90 градусов перед лицом моба, и только тогда реагируем. Кидать кучу рейкастов вперед перед мобов, не продуктивно.
т.е. в старте или авейке запускаем рекаст на игрока , т.е. нпс как бы ВСЕГДА видит игрока. потом делаем функцию, если игрок в определенном радиусе, перед нпс, его ничего не заслоняет - нпс реагирует. функцию вызываем в апдейте
Рейкаст в авейке запускать не надо. Надо дать ссылку на игрока. Рейкаст авейком мало того, что плохо пахнет и создат лаги. Так еще и не имеет 100% гарантии что он отработает. Так как мы можем переместить игрока между выполнением кода или броском рейкаста. Но суть да такая. в UPDATE лучше не пихать лучше в FIX либо через корутинку. 5 раз в секунду например или 2-10 как хочешь. каждый кадр это жирно.
понял, спасибо. пойду разбираться
Обсуждают сегодня