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

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

КОМЕНТАРІ • 95

  • @seldemirov
    @seldemirov 5 років тому +62

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

  • @DARKNETOFFICIAL
    @DARKNETOFFICIAL 3 роки тому +2

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

  • @quadath3963
    @quadath3963 3 роки тому +1

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

    • @quadath3963
      @quadath3963 3 роки тому

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

  • @dkvChannel
    @dkvChannel 2 роки тому +1

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

  • @Abuir1
    @Abuir1 11 місяців тому +1

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

  • @devdem
    @devdem 5 років тому +3

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

  • @MorfixProton
    @MorfixProton Рік тому +1

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

  • @vlados4105
    @vlados4105 4 роки тому +1

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

  • @ИванВикторович-л8ж

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

  • @user-kc6uw7qw6j
    @user-kc6uw7qw6j 2 роки тому

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

  • @user-df7zl1dh9c
    @user-df7zl1dh9c 5 років тому +9

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

  • @amurlamur3125
    @amurlamur3125 4 роки тому +3

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

  • @cfl3845
    @cfl3845 2 роки тому

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

  • @user-qg1kd4zi3g
    @user-qg1kd4zi3g 5 років тому +6

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

    • @Mr.Epsilion
      @Mr.Epsilion 4 роки тому +1

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

    • @adetyty5251
      @adetyty5251 3 роки тому

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

    • @_shon3266
      @_shon3266 2 роки тому

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

  • @WiRight
    @WiRight 4 роки тому +4

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

  • @Ventallica
    @Ventallica 4 роки тому +1

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

  • @PavelStr-x5w
    @PavelStr-x5w Рік тому

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

  • @Einxeld
    @Einxeld 3 роки тому +2

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

  • @СергейТищенко-к6з
    @СергейТищенко-к6з 3 роки тому

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

  • @David-jv6xx
    @David-jv6xx 5 років тому +2

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

  • @MaverixGamesStudio
    @MaverixGamesStudio 5 років тому

    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

  • @MsWital
    @MsWital 4 роки тому +2

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

  • @dkvChannel
    @dkvChannel Рік тому +1

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

  • @The_Mavrik
    @The_Mavrik 2 роки тому

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

  • @МаксимЧернявский-д9ш

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

  • @ИванВикторович-л8ж

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

  • @nomilon3770
    @nomilon3770 2 роки тому

    Круто

  • @user-qr8cj3eb9o
    @user-qr8cj3eb9o 2 роки тому

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

  • @HumorANDCHannel
    @HumorANDCHannel 3 роки тому

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

  • @ИванВикторович-л8ж

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

  • @spider853
    @spider853 2 роки тому

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

  • @alicewithalex
    @alicewithalex 5 років тому +12

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

    • @--.--
      @--.-- 4 роки тому

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

    • @getmanovich377
      @getmanovich377 3 роки тому

      ua-cam.com/video/blPglabGueM/v-deo.html&ab_channel=Brackeys

  • @MementoMoriLife
    @MementoMoriLife Рік тому +1

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

  • @ВолодимирКолягін
    @ВолодимирКолягін 3 роки тому +1

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

  • @ИванВикторович-л8ж

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

  • @victortrach9085
    @victortrach9085 4 роки тому

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

  • @ИванВикторович-л8ж

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

  • @user-mw2cd3lu8n
    @user-mw2cd3lu8n 4 роки тому +1

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

  • @nightkot4917
    @nightkot4917 2 роки тому +1

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

  • @dekokoplay
    @dekokoplay 2 роки тому +1

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

  • @neverworld8815
    @neverworld8815 2 роки тому +1

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

  • @ДмитрийАнтипанов-п8т

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

  • @Th3_V3ct0rAT2
    @Th3_V3ct0rAT2 2 роки тому

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

  • @user-df7zl1dh9c
    @user-df7zl1dh9c 5 років тому +1

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

  • @nomadik003
    @nomadik003 4 роки тому

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

  • @ilyalonginov7880
    @ilyalonginov7880 4 роки тому +2

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

  • @KirZabo
    @KirZabo 2 роки тому

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

  • @ShadeZlat
    @ShadeZlat 3 роки тому

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

  • @Veyron104
    @Veyron104 4 роки тому

    странно, у меня выдало предупреждение
    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()
    получается в самой игре это не проканает?

  • @ИванВикторович-л8ж

    вот таких

  • @schevgeny
    @schevgeny 3 роки тому

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

  • @BRYAMARE02
    @BRYAMARE02 7 місяців тому

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

  • @seriousserega2496
    @seriousserega2496 2 роки тому

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

  • @noobool
    @noobool 4 роки тому +1

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

    • @EmeraldPowder
      @EmeraldPowder  4 роки тому

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

    • @amurlamur3125
      @amurlamur3125 4 роки тому

      ua-cam.com/video/GmbbU-RytGg/v-deo.html
      Для тех у кого проблема с SetDestiniation

    • @Bald_Panther
      @Bald_Panther 4 роки тому

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

  • @sketchturner8229
    @sketchturner8229 2 роки тому

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

  • @ИванКлючников-л7п
    @ИванКлючников-л7п 5 років тому

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

  • @ВолодимирКолягін
    @ВолодимирКолягін 3 роки тому

    Выложил готовый скр для 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 < 16)// Если есть игровые часы то здесь привязываем, так делаем график НПС
    // {
    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());
    }

  • @d1mple05
    @d1mple05 2 роки тому

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

  • @FreexYouTube
    @FreexYouTube 4 роки тому

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

    • @EmeraldPowder
      @EmeraldPowder  4 роки тому

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

  • @alibekgadzhibaev2528
    @alibekgadzhibaev2528 4 роки тому

    ЛАВ Ю

  • @VolkGam
    @VolkGam 4 роки тому

    Скопировал папку 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 роки тому +1

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

  • @ИванВикторович-л8ж

    и таких

  • @rayankrimmer2611
    @rayankrimmer2611 Рік тому

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

    • @KrutaMan
      @KrutaMan Рік тому

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

  • @realcritic7962
    @realcritic7962 5 років тому +1

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

    • @EmeraldPowder
      @EmeraldPowder  5 років тому +1

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

  • @vulpius4001
    @vulpius4001 2 роки тому

    sao paulo na thumb fdc kkkkkkkkkkkkk

  • @talit35
    @talit35 3 роки тому

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

  • @Krusensterrn
    @Krusensterrn 3 роки тому

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

    • @Krusensterrn
      @Krusensterrn 2 роки тому

      @Nonam и 19 тоже

    • @Krusensterrn
      @Krusensterrn 2 роки тому

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

    • @Krusensterrn
      @Krusensterrn 2 роки тому

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

  • @wiaslak4962
    @wiaslak4962 3 роки тому

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

  • @deadman1114
    @deadman1114 2 роки тому

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

  • @ИванВикторович-л8ж

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

  • @amurlamur3125
    @amurlamur3125 4 роки тому

    ua-cam.com/video/GmbbU-RytGg/v-deo.html
    Для тех у кого проблема с SetDestiniation

  • @KrutaMan
    @KrutaMan Рік тому

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

  • @ИванВикторович-л8ж

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

  • @Константин-ф6г9ж

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