🗺️ NavMesh - поиск пути и перемещение по карте [Unity 3D] [Tutorial]

С помощью системы Nav Mesh можно сделать множество вещей связанных с перемещением объектов в игре - управление юнитами игрока, перемещение NPC по карте, поиск пути в лабиринте. В этом видео я расскажу как этим всем пользоваться в Unity 3D, покажу как использовать Nav Meshes на карте с движущимися препятствиями, или на процедурно-генерируемом уровне, создавать разные типы юнитов и зон
Содержание:
Как подключить NavMesh Components - 0:17
Простая навигация и прыжки - 0:52
Движущиеся препятствия и NavMesh Obstacle - 6:56
Генерация NavMesh из скрипта - 9:55
Ссылка на NavMesh Components: github.com/Unity-Technologies...
На этом канале регулярно появляются новые видео, которые позволят тебе научиться создавать игры, или подарят новые идеи и вдохновение, если ты уже умеешь. Подписывайся!
Остались какие-то вопросы, пожелания, или идеи для других видео? Смело пиши в комментарии под видео

Пікірлер: 95

  • @vlados4105
    @vlados41054 жыл бұрын

    Огромное спасибо за урок! Все понятно, информативно и с отличным объяснением как это работает и для чего это используется! Продолжай в том же духе, у тебя отлично получается. Из всех пересмотренных мною видосов по юнити только у тебя понятное изложение материала и нормально объяснение.

  • @DARKNETOFFICIAL
    @DARKNETOFFICIAL3 жыл бұрын

    ОГРОМНОЕ СПАСИБО, решил сделать стратегию но столкнулся с проблемой поиска пути, везде показывают какие-то сложные алгоритмы но благодаря этому видео нашел удобный и быстрый способ реализовать это

  • @dkvChannel
    @dkvChannel2 жыл бұрын

    Отличное видео! Я уже голову сломал как то же самое организовать самому, но похоже применю это. Спасибо за труд!

  • @user-kc6uw7qw6j
    @user-kc6uw7qw6j2 жыл бұрын

    Большое спасибо за видео, вы один из лучших Unity каналов на KZread

  • @devdem
    @devdem5 жыл бұрын

    Я этот видос ещё не смотрел, но просто хочу сказать благодарность за такой контент) реально годные видосы, с хорошим звуком и картинкой, желаю набрать куча просмотров и аудитории. Ну, а если нужна идея, то было бы неплохо показать симуляцию планет в 2D. Вы хоть и сказали, что все будет работать и в 2D, но чего-то у меня сегодня не получилось, весь скрипт перелопатил, а все равно не получается ( спасибо за видосы и удачи)

  • @seldemirov
    @seldemirov5 жыл бұрын

    Самое адекватное изложение работы в юнити что я встречал. Спасибо.) Очень хотелось бы увидеть уроки по генеративным лакациям, о которых упомяналось в видео.

  • @quadath3963
    @quadath39633 жыл бұрын

    Случайно видео попалось в рекомендации, спасибо большое, для меня давно стояла эта проблема поиска пути, спасибо больше ещё раз

  • @quadath3963

    @quadath3963

    3 жыл бұрын

    Но что насчёт 2д?

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    Ты лучший, я не новичек, может по этому я так считаю, но это белиссимо!!! без эканей, все четко и по делу, вообщем мне помог, документацию даже не пришлось читать!!!

  • @user-df7zl1dh9c
    @user-df7zl1dh9c5 жыл бұрын

    Очень полезный урок! Продолжай в том же духе!

  • @Abuir1
    @Abuir19 ай бұрын

    спс большое, сильно упростил написание скриптов для врагов в рогъюлайте

  • @WiRight
    @WiRight4 жыл бұрын

    Огромное спасибо Вам за Ваши труды! Все видео доступно и качественно объясняют работу с Unity3D. Желаю только увеличение контента! И мобильной разработки)

  • @amurlamur3125
    @amurlamur31254 жыл бұрын

    Спасибо огромное за урок, помог найти ошибку

  • @cfl3845
    @cfl38452 жыл бұрын

    Братан, помог, от души. В другом видосе даже не говорил о том что нужен ассет для передвижения юнитов...

  • @MorfixProton
    @MorfixProton Жыл бұрын

    Спасибо автору!

  • @user-we6si4mi3x
    @user-we6si4mi3x Жыл бұрын

    Спасибо за урок !!)

  • @David-jv6xx
    @David-jv6xx5 жыл бұрын

    Спасибо ХорошАя работа

  • @user-zr2wx3by2s
    @user-zr2wx3by2s3 жыл бұрын

    Ты лучший по туторам

  • @MsWital
    @MsWital4 жыл бұрын

    Отличный урок) спасибо)

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    отличное видео

  • @victortrach9085
    @victortrach90854 жыл бұрын

    Привет, спасибо за твои видео, смотрю с удовольствием. Есть просьба, сделай пожалуйста видео по модификаторам доступа. В качественном коде, какие свойства нужно делать private а какие можно public

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    супер объяснил

  • @user-qg1kd4zi3g
    @user-qg1kd4zi3g5 жыл бұрын

    Спасибо за отличный урок, хотелось бы увидеть урок, как патрулирует и реакцию игрока при обнаружении, . При потери игрока, возврата на прежнию позицию.

  • @Mr.Epsilion

    @Mr.Epsilion

    4 жыл бұрын

    Могу книгу посоветовать...

  • @adetyty5251

    @adetyty5251

    3 жыл бұрын

    Патрулирование в программе циклом делаешь, а обнаружение делаешь лучами и выходом из этого цикла.

  • @_shon3266

    @_shon3266

    2 жыл бұрын

    Наверно уже не актуально, но сам стараюсь в таких случаях state machine писать, плюс добавлять новые состояния не составит труда. Но если буквально парочка таких состояний, то можно что то попроще.

  • @user-gq7wt3zs1t
    @user-gq7wt3zs1t3 жыл бұрын

    Максимально доходчиво. Спасибо большое!

  • @The_Mavrik
    @The_Mavrik2 жыл бұрын

    Привет. Давай новые видосики !!! У тебя они самые чёткие

  • @Ventallica
    @Ventallica4 жыл бұрын

    Сссииииллаа! Очень круто! Спасибо 👍🏻👍🏻👍🏻

  • @HumorANDCHannel
    @HumorANDCHannel3 жыл бұрын

    Чувааааак это круто

  • @nomilon3770
    @nomilon37702 жыл бұрын

    Круто

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    и еще таких)))

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    Вот реально от души я тебе коменатриев нахерачу)))

  • @user-qr8cj3eb9o
    @user-qr8cj3eb9o2 жыл бұрын

    Я всё это лучами в ручную делал) 🥺

  • @spider853
    @spider8532 жыл бұрын

    Спасибо за интро про старого навмеша, думал схожу сума, сделал буйлд от туда, и потом не понимал почему объект проходит сквозь... сделал клир и все ок

  • @ShadeZlat
    @ShadeZlat3 жыл бұрын

    не подскажешь как сделать, чтобы ускорение было и у drop height? при прыжке на одном уровне ускорение есть, но при падении с высот действует обычная скорость агента почему-то, в документациях ничего толком нет про это, может ты сталкивался? спасибо

  • @Einxeld
    @Einxeld2 жыл бұрын

    Спасибо за прекрасное объяснение. Только теперь не нужно скачивать скрипты с гитхаба, а всё уже есть в AI Navigation package.

  • @qbicvideo

    @qbicvideo

    2 жыл бұрын

    Всё верно

  • @MaverixGamesStudio
    @MaverixGamesStudio5 жыл бұрын

    No vas a entender nada de lo que ponga, y no entendí nada de lo que dijiste, pero aprendí viendo y practicando lo que hiciste, no había visto un tutorial de Navmesh tan sencillo, Gracias

  • @EmeraldPowder

    @EmeraldPowder

    5 жыл бұрын

    Thanks! Google Translate helped, glad that my tutorials so visualy helpful, I'll try to add at least English subtitles

  • @MaverixGamesStudio

    @MaverixGamesStudio

    5 жыл бұрын

    @@EmeraldPowder thank you, i can handle a english conversation

  • @user-mh2ll7cg7x
    @user-mh2ll7cg7x3 жыл бұрын

    Отличный урок, можно ли узнать где то о дополнительных функциях, например что бы при перепрыгивании например поменялась анимация на персонаже, то есть событие от куда можно брать, и есть ли мануал по функциям?

  • @nomadik003
    @nomadik0034 жыл бұрын

    А можно ли использовать NavMeshSurface другими скриптами? Например я реализую свой алгоритм поиска пути, не используя navmeshagent, но алгоритм не учитывает препятствия, которые могут быть на уровне. Могу ли я как-то использовать результаты запекания карты NavMeshSurface или все-таки тут нужно делать свою реализацию обнаружения объектов?

  • @alicewithalex
    @alicewithalex5 жыл бұрын

    Очень познавательно, но можно попросить о туториале, где ты сможешь рассказать, как сделать, чтобы персонаж перепрыгивал обрыв или забирался куда-то с нужной анимацией. То есть интересует как синхронизировать это всё) Заранее спасибо)

  • @--.--

    @--.--

    4 жыл бұрын

    Добавить триггер на грани обрыва и при касании проигрывать анимацию

  • @getmanovich377

    @getmanovich377

    3 жыл бұрын

    kzread.info/dash/bejne/lKCEyc6akqrblbA.html&ab_channel=Brackeys

  • @dkvChannel
    @dkvChannel Жыл бұрын

    В версии юнити 2022.х мне пришлось установить Visual Studio Editor, Visual Studio Code Editor и AI Navigation через Package Manager. Без этого не работало.

  • @user-mw2cd3lu8n
    @user-mw2cd3lu8n4 жыл бұрын

    Ignore from build не странная штука, а как раз таки необходимая, т.к. в рантайме зачастую проблематично слои менять.

  • @user-df7zl1dh9c
    @user-df7zl1dh9c5 жыл бұрын

    При скачивании скрипта у меня появились тонны ошибок в консоле, версия 2018.2Of.2

  • @MementoMoriLife
    @MementoMoriLife Жыл бұрын

    2023 год, NavMeshSurface до сих пор не встроена в Unity3d

  • @Veyron104
    @Veyron1044 жыл бұрын

    странно, у меня выдало предупреждение RuntimeNavMeshBuilder: Source mesh Combined Mesh (root: scene) does not allow read access. This will work in playmode in the editor but not in player UnityEngine.AI.NavMeshSurface:BuildNavMesh() получается в самой игре это не проканает?

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    вот таких

  • @schevgeny
    @schevgeny3 жыл бұрын

    получается этой штукой можно заставить nps гулять по дорожкам по карте от домика к домику и они сами будут искать кратчайший путь?

  • @seriousserega2496
    @seriousserega24962 жыл бұрын

    Привет, а есть ли такой инструмент, но для проложения пути по сфере?

  • @Th3_V3ct0rAT2
    @Th3_V3ct0rAT22 жыл бұрын

    А можно сделать так чтобы без нав меш прыжка объект самостоятельно находил обрывы и прыгал с них на ближайшие платформы? Ну точнее говоря чтобы нав меш прыжок автоматически появлялся?

  • @user-iq7pe6sy4y
    @user-iq7pe6sy4y3 жыл бұрын

    Не знаю насколько вам нужно это обновление, по чему то до сих пор так и не встроенное в редактор, Но сетка прорисованная стандартным сделала проходи под дверями и вообще захватила большую площадь, Новая же повешенная вот так на объект как показано на видео, не сделала соединения под дверями, по карте очень много зон не покрыты, хотя там вполне можно ходить, как результат удалил к чертям это ручное обновление. Не вижу смысла, поставь там где надо что б не ходили кирпич, запеки, и удали кирпич. Очень жаль что нельзя вручную рисовать.

  • @dekokoplay
    @dekokoplay2 жыл бұрын

    Здравствуйте. Нужна помощь. Я сделал свою 3д модель и ии странно себя ведёт он пытается пройти в узкую щель и игнорирует любой другой маршрут помогите

  • @noobool
    @noobool4 жыл бұрын

    Спасибо за видео, хотелось бы узнать кое что, когда я нажимаю bake - ничего ен происходит. Ну, то есть, он что то запекает вроде, но никакой сетки не появляется. Как можно решить эту проблему?

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Может быть коллайдеров нет на объектах? Должны быть именно 3D коллайдеры, если стоит запекание по ним. И слои на которых объекты тоже стоит проверить, возможно какие-то исключены из запекания

  • @amurlamur3125

    @amurlamur3125

    4 жыл бұрын

    kzread.info/dash/bejne/eaGWxLdmgtzad8o.html Для тех у кого проблема с SetDestiniation

  • @Bald_Panther

    @Bald_Panther

    4 жыл бұрын

    Запекает, только сетку не показывает. Тоже было так. У меня был Gizmos выключен, поэтому сетку не показывал. Думаю, у тебя так же.

  • @nightkot4917
    @nightkot49172 жыл бұрын

    Для созданных из пула объектов не подходит. "SetDestination" can only be called on an active agent that has been placed on a NavMesh.

  • @KirZabo
    @KirZabo Жыл бұрын

    Не знаю, актуально ли это, но возможно как-то создать что-то на подобе некстбота из Garry's mod? Я уже вроде бы придумал, как это реализовать, но не уверен в точности данного способа. Я думаю, можно создать плоскость, на которую закидывается скрипт, который вечно поворачивает плоскость на камеру, и ещё добавить коллайдер сферы. Вроде, если получившийся объект скомбинировать с данным скриптом, то может получится что-то похожее.

  • @ilyalonginov7880
    @ilyalonginov78804 жыл бұрын

    Всем доброго времени суток. Прошу, помогите с проблемой! Которые сутки копаюсь и понять не могу. У меня выдаётся ошибка в коде NavMeshSurface, а конкретно - 16-я строчка кода [ExecuteAlways] горит красным и выдаётся замечание "Не удалось найти имя типа пространства имён ExecuteAlways (пропущена директива using или ссылка на сборку)" Сам я никак не могу догадаться, где найти эту ссылку на сборку, куда её вписать, Куда я только эту директиву using не вставлял и какие только библиотеки не подключал. Нигде ответов на решение данной проблемы нету. У меня по той-же причине не запускается и оригинальный игровой проект, от которого все люди копируют папку с компонентами и скриптами, в частности NavMeshSurface. Прошу, помогите мне понять, что у меня не так, ведь я пересмотрел уже десятки роликов по данной теме и удалял/качал все эти скрипты и папки множество раз. У всех на видео всё отлично и без ошибок. Что у меня,никак понять не могу

  • @MrPhantomdc

    @MrPhantomdc

    3 жыл бұрын

    using UnityEngine.AI

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    и таких

  • @d1mple05
    @d1mple052 жыл бұрын

    Как заставит нпс идти к определенномв обьекту?

  • @FreexYouTube
    @FreexYouTube4 жыл бұрын

    как выключить инерцию? Почему персонаж при клике в противоположную сторону какое то время двигается по инерции, при отсутствии физики

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    Там есть Acceleration у NavMeshAgent, и ещё несколько параметров, можешь их попробовать подкрутить, чтобы резче двигался

  • @VolkGam
    @VolkGam4 жыл бұрын

    Скопировал папку NavMeshComponents в проект как вы сказали... Вылезла ошибка (версия Unity 2019.3.7f): Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed. Случайно не знаете, почему и что делать? Спасибо!

  • @VolkGam

    @VolkGam

    4 жыл бұрын

    А... Перезапустил Unity - вроде ошибка пропала... ) Бред какой-то... Хотя в Unity многое решается перезаходом... ))

  • @user-lh2xr3pe2v
    @user-lh2xr3pe2v5 жыл бұрын

    Спасибо за урок, довольно коротко и по существу, без воды. У меня вопрос к вам. Никак не могу найти такого же инструмента, но для 2,5 d игры. Ну например кабан нападает на плеера, и по пути обходит препятствия, но только в 2d игре с видом сверху. Быть может вы посоветуете что-нибудь? Ну если видос запилите, то век вам буду благодарен. Да и ничего похожего нет в тырнетах, наверно смотреть будут люди.

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    дальше я устал писать))))

  • @user-iq7pe6sy4y
    @user-iq7pe6sy4y3 жыл бұрын

    Выложил готовый скр для NPC, а то все показывают на плеере, а плееру навмеш как зайцу стоп сигнал, он в основном для НПС используется. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class Man5Control : MonoBehaviour { NavMeshAgent Man5Navi; //Animator Man5Anim; //ваш аниматор персонажа //public GameObject CubeResources;// мой объект с часами private int Man5Time; //Время в цифрах private Vector3 targetPos; private void OnEnable()// запускается при активации персонажа, то есть можете отключать нпс сколько хотите а потом включать. // это вместо старта. Старт здесь как по мне неуместен. { Man5Navi = GetComponent(); // Man5Anim = GetComponent(); StartCoroutine(Man5Updator()); } IEnumerator Man5Updator() { //Man5Time = CubeResources.GetComponent().GameMin; // if (Man5Time > 9 && Man5Time // { targetPos = new Vector3(354.0f, 12.0f, 514.0f);// Здесь указываем куда ему идти в точных координатах. Man5Navi.SetDestination(targetPos); // Основная команда на передвижение // } yield return new WaitForSeconds(1.0f); // обновляется каждую секунду, что б не загадить Updat RepCourMan5();// зацикливаем корутину yield break; // обязательно убиваем корутину, иначе будет 60 за минуту итд. } public void RepCourMan5() { StartCoroutine(Man5Updator()); }

  • @neverworld8815
    @neverworld88152 жыл бұрын

    Конечно штука неплохая, но дико раздражает что он строго двигается по крайним точкам, например в каких-то тунелях он всегда придерживается стены а не идёт по центру, а если увеличить радиус то он начинает тормозить и стоять на месте по минуте даже если угловая скорость максимальная

  • @alibekgadzhibaev2528
    @alibekgadzhibaev25284 жыл бұрын

    ЛАВ Ю

  • @BRYAMARE02
    @BRYAMARE026 ай бұрын

    а что делать если нет Nav Mesh Agent?

  • @wiaslak4962
    @wiaslak49623 жыл бұрын

    Большое спасибо за видео, очень помогло! но у меня вопрос как сделать маркер в том месте куда идет персонаж, чтобы было видно куда кликнул, подскажите очень прошу!!!!!!

  • @rayankrimmer2611
    @rayankrimmer2611 Жыл бұрын

    А как переместить именно через свой PlayerControll? Без компонента NavMeshAgent

  • @KrutaMan

    @KrutaMan

    Жыл бұрын

    NavMeshPath path = new NavMeshPath(); bool pathExists = NavMesh.CalculatePath(transform.position, moveTo.position, layerMask, path); // path.corners.Length - массив точек по которым рассчитан маршрут

  • @talit35
    @talit352 жыл бұрын

    Здравствуйте, как убрать территорию по которой юнит не должен идти?

  • @greetingstraveller

    @greetingstraveller

    2 жыл бұрын

    перенести на отдельный слой

  • @deadman1114
    @deadman11142 жыл бұрын

    Я сделал хоррор игру... И по вашему гайду настроил херь которая приследует игрока, так вооот после запуска я обосрался... Не ожидал что окажется так страшно...

  • @Krusensterrn
    @Krusensterrn3 жыл бұрын

    у меня почему-то персонаж передвигается не плавно, как будто микро рывками, не могу понять в чем причина, без navmesh персонаж движется плавно, как не менял параметры, все равно дергается, не дергается если только перемещается очень медленно. Была у кого еще такая проблема? Может есть какое то решение, я пользуюсь 18 юнити.

  • @Krusensterrn

    @Krusensterrn

    2 жыл бұрын

    @Nonam и 19 тоже

  • @Krusensterrn

    @Krusensterrn

    2 жыл бұрын

    @Nonam ну я на 18 тоже пытался это реализовать, но тоже самое, персонажи движутся рывками.

  • @Krusensterrn

    @Krusensterrn

    2 жыл бұрын

    @Nonam или ты про версию юнити? Ты видать не через хаб пользуешься, лучше поставить хаб, там проще контролировать версии.

  • @vulpius4001
    @vulpius40012 жыл бұрын

    sao paulo na thumb fdc kkkkkkkkkkkkk

  • @sketchturner8229
    @sketchturner82292 жыл бұрын

    Не совсем понимаю, у меня нет NavMeshSurface, только agent и все.

  • @realcritic7962
    @realcritic79624 жыл бұрын

    один из немногих роликов где есть то что мне нужно и нигде !!! нигде не найду как это сделать или не пашет нифига.. как тут сделана камера ???? видно что двигаешь камеру зажимая пкм или клм .. как это сделать к д2 ????? любые попытки найти как двигать камеру.. упирается в прикрепить камеру к игроку или еще куда.. но не курсором.. отпиши плз или еще ктонить.

  • @EmeraldPowder

    @EmeraldPowder

    4 жыл бұрын

    У меня тут вообще камера в игре никак не двигается, правой кнопкой я только в окне редактора её двигаю, и ставлю в текущее положение с помощью ctrl+shift+f. А вообще движение камеры курсором много разных вариантов как сделать, достойно отдельного видео

  • @amurlamur3125
    @amurlamur31254 жыл бұрын

    kzread.info/dash/bejne/eaGWxLdmgtzad8o.html Для тех у кого проблема с SetDestiniation

  • @user-ts4vz3rg8j
    @user-ts4vz3rg8j4 жыл бұрын

    пустых кометнов

  • @user-co3di5pd1c
    @user-co3di5pd1c11 ай бұрын

    Мужик, можно было сначала пописить, а потом записывать ролик. Не надо было бы тогда так торопиться

  • @KrutaMan
    @KrutaMan Жыл бұрын

    Можно просто рассчитать путь и не использовать NavMeshAgent для перемещения, а сделать например свой агент со своими особенностями перемещения и т.д. NavMeshPath path = new NavMeshPath(); bool pathExists = NavMesh.CalculatePath(transform.position, moveTo.position, layerMask, path); // path.corners.Length - массив точек по которым рассчитан маршрут

Келесі