Внимание! В этом видео еще используется старая система навигации, вот видео в котором подробно описано где найти новую систему навигации и как ей пользоваться th-cam.com/video/nQQ7I603ANw/w-d-xo.html.
@@---eu1ki Не знаю может в более новых версиях редактора что-то поменяли, они постоянно что -то куда-то переносят, переназывают, так что трудно сказать, навигацию они там перенесли. Кстати теги все есть, все подключены, скрипт из описания взят? Тогда только проект смотреть надо. Если на ту же версию что у меня и все также сделать, то все заработает.
Еще кто будет пользоваться этим видео, имейте ввиду, здесь используется устаревшая (Obsolete) система AI Navigation. Как минимум с 2022 новая перенесена в плагин и устанавливается через Package Manager (надо проверить и установить, если ее нет в Packages) и устроена чуть по-другому.
Привет, не останавливайся пожалуйста, ты помогаешь очень многим людям, ты лучший, веди стримы, тебе миллионы донатить будут, респект тебе мужик, ты единственный человек на ютубе, который по этой теме, что то годное сделал
Спасибо. Но, к сожалению я уже все. Во первых нет времени, во вторых Unity разочаровал меня. А в третьих TH-cam разочаровал за 3 года $100 вывел. Так что пока по крайней мере гастроли закончены. Насчет донатить я бы не сказал, а вот если бы какой то нормальный курс записать, то может и что-то и заработать.
Очень не гибкое решение с точками патрулирования. Что если врагов несколько и у них разные точки? Такое решение не подойдет. Искать точки по тегам через find() да еще в скрипте анимации - супернеудобно, да и вообще find это грешновато. Тут напрашивается перенести список точек в конкретного врага через сериализуемое поле. А через параметр аниматор в методах обработки событий анимаций находить нужного врага и менять ему состояние на требуемое в нужные моменты.
Здравствуйте, ролик отличный, я лайк поставил и подписался! Но единственное, у меня почему-то при переходе из состояния покоя в патрулирование, враг начинает анимацию патрулирования, но остаётся на месте, а затем снова в состоянии покоя и так по кругу. Я ваш код скопировал из гугл диска, сделав как на видео, но не работает(
Когда вставляешь мой код смотри, чтобы у тебя все объекты и переменные точно ткже назывались, или меняй названия в коде, очень часто делают эту ошибку. Потом в коде у тебя могут быть разные расстояния, когда начинать анимацию, еще посмотри есть ли на всех объектах коллайдеры и риджидбоди и проверь их настройки. Дальше видео делалось на старой версии редактора, может уже что то не так работать, короче тут нюансов много может быть, без проекта не скажешь. Пойми это не ассет, что ты вставил и он у тебя заработал, это видео, чтобы более менее понять как это работает.
Все работает спасибо. Есть два нюанса. Устанавливал такой же набор как у вас (его обновили). Посмотрел видео, которое вы прикрепили в комментариях, так как у меня Unity 2023. Мой NPC крутится вокруг поинтов, в то время как ваш этого не делает. Также иногда он останавливается и бежит на месте. Может быть, это связано с тем, что на террейн есть деревья, хотя их немного. И у меня есть NavMesh Surface (с другого вашего видео), в Navigation есть Bake. Причем удаляя один из них, NPC начинает крутиться вокруг одного поинта, но не бегает к остальным. Не знаю что делать. Буду благодарен за помощь. Еще раз спасибо
@@АйтиНуб очень жаль, но я всё равно хочу поблагодарить вас за то, что вы этим занимались. Ваши видео помогли научиться чему-то новому, пробовать и экспериментировать и я думаю, что не только мне. Я верю, что вы будете развиваться в той сфере, которая вас интересует. На ютубе не очень много видео, в которых подробно объясняют как вы. Еще раз спасибо
@@АйтиНуб очень жаль, но я все равно хочу поблагодарить вас за то, что вы этим занимались. Ваши видео помогли научиться чему-то новому, пробовать и экспериментировать и я думаю, что не только мне. Я верю, что вы будете развиваться в той сфере, которая вас интересует. На ютубе не очень много видео, в которых подробно объясняют как вы. Еще раз спасибо
Bake сделали? Navmesh Agent стоит? Скрипты все правильно подключены, переменные имеют такие же названия как в иерархии и аниматоре, как и в скриптах? Действия производились на чистую сцены или там уже куча всего стояло, что может конфликтовать? Коллайдеры, риджидбоди везде на всех объектах правильно стоят, как в видео? Данные в скриптах, расстояния разные тоже может надо поменять ()меньше, больше например) Ищите ошибку, если работает в видео, то и везде будет работать, по другому не может быть.
@@АйтиНуб я применял ваш способ на 2D объект, не работает оно нормально. Сейчас ищу как сделать мирного NPC, который бы просто ходил влево и вправо останавливаясь на отдых секунд на 5.
у меня проблема застрял на стадии патрюля у меня не пригруеться анимация ходьбы и он двигаеться на половину утопленный в карту полностью замерши помогите решить
Наполовину у топленный это из за это коллайдера, старайтесь сразу выставлять все координаты на ноль и смотреть координаты коллайдеров на объектах. Такое бывает с готовыми ассетами или моделями, просто коллайдер выровняйте с вашим объектом. С анимацией может быть переменная не работает, может с расстояниями надо что-то сделать, увеличить например, надо самому смотреть, так не сказать без проекта. Поймите, что все видео делались на чистую сцену с нуля, то есть если у вас уже что то там было, могут быть разные конфликты. А если взять внимательно сделать все с нуля и ничего не пропустить, то все будет работать.
Добрый день! Пишу по вашему гайду свой ИИ, но он всего лишь стоит на месте и дальше не двигается, все скрипты прописаны и закреплены, в чем может быть дело?
Привет. Если скрипты у меня брали, то проверьте, чтобы названия переменных и объектов совпадали из скриптов в сцене и аниматоре. MeshAgent стоит на персонаже? Bake делали? Ошибки, логи выбивает? Каких то других скриптов нету, ничего конфликтовать не может? Если анимации не срабатывает, то искать соответственно в этом направлении, если не перемещается, то MeshAgent.
Привет. Да я бы скинул, если бы он у меня был, я все удаляю где то после второго месяца. А что не так именно? Если на чистый проект, то все должно быть так же как здесь.
У меня проект уже 2 месяца как бы. А ну когда я включаю бейк То у меня эта синяя штука не активируется Хотя я делаю всё как на видео выделяю все эти объекты (((
@@krishovie У тебя, когда ты статические объекты выбираешь в инспекторе в самом вверху справа возле названия есть чек поинт Static, он должен быть включен. У меня просто по умолчанию был включен поэтому я не обратил внимание на это.
Всё круто, враг патрулирует территорию, преследует персонажа, поворачивается в его сторону, но почему-то у него не работают анимации, с чем это может быть связано?
Мда, у меня такое было, но уже не вспомню как решил, по моему, что-то забыл куда то вставить или переменную, помню, что какая то ерунда. Но здесь по видео уже все нормально должно быть, если скрипт в описании брали то смотрите на названия переменных и объектов, чтобы совпадали с теми что в проекте, также может расстояния в скриптах не правильно, бейк сделали?. Здесь много чего может быть, без проекта не скажешь. Если точно делать , все вниматнльно как на видео на чистую сцену, то все работает.
у меня такая проблема у меня нпс проваливается под землю когда я с ним сталкиваюсь, как можно это исправить я уже все перепробовал. не именно проваливается в бесконечность под карту а как бы нагибается от соприкосновения со мной
Помоги,а что если из анимаций у меня idle,patrol,attack?Просто когда я все это зделал мой враг стоит в idle позиции и не атакует меня и вовще не видет.У меня тег Player
Если скрипты скачал в описании, то смотри, чтобы у тебя в проекте все переменные имели такие же названия, как и в скриптах. Компоненты в инспекторе все есть, коллайдеры например у объектов.
он бегал только к одной точке. решение: у вас было пара ошибок, вот скрипты правильные: IdleBehaviour: using System.Collections; using System.Collections.Generic; using UnityEngine; public class IdleBehaviour : StateMachineBehaviour { float timer; Transform player; float chaseRange = 10; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { timer = 0f; player = GameObject.FindGameObjectWithTag("Player").transform; } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { timer += Time.deltaTime; if (timer > 2) { timer = 0f; animator.SetBool("isPatrolling", true); } float distance = Vector3.Distance(animator.transform.position, player.position); if (distance < chaseRange) { animator.SetBool("isChasing", true); timer = 0f; }
} // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } } PatrolBehaviour: using UnityEngine.AI; using System.Collections.Generic; using UnityEngine; public class PatrolBehaviour : StateMachineBehaviour { float timer; int random; List points = new List(); NavMeshAgent agent; Transform player; float chaseRange = 10; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { timer = 0; Transform pointsObject = GameObject.FindGameObjectWithTag("Points").transform; foreach (Transform t in pointsObject) points.Add(t); random = Random.Range(0, 9); agent = animator.GetComponent(); agent.SetDestination(points[random].position); player = GameObject.FindGameObjectWithTag("Player").transform; } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { if (agent.remainingDistance 5) { animator.SetBool("isPatrolling", false); timer = 0f; } float distance = Vector3.Distance(animator.transform.position, player.position); if (distance < chaseRange) { animator.SetBool("isChasing", true); timer = 0f; } } // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { agent.SetDestination(agent.transform.position); } } ChaseBehaviour: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class ChaseBehaviour : StateMachineBehaviour { NavMeshAgent agent; Transform player; float attackRange = 2; // float chaseRange = 10; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { agent = animator.GetComponent(); agent.speed = 4; player = GameObject.FindGameObjectWithTag("Player").transform; } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { agent.SetDestination(player.position); float distance = Vector3.Distance(animator.transform.position, player.position); if (distance < attackRange) animator.SetBool("isAttacking", true);
if (distance > 10) animator.SetBool("isChasing", false); } // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { agent.SetDestination(agent.transform.position); agent.speed = 2; } } AttackBehaviour: using System.Collections; using System.Collections.Generic; using UnityEngine; public class AttackBehaviour : StateMachineBehaviour { Transform player; // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { player = GameObject.FindGameObjectWithTag("Player").transform; } // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { animator.transform.LookAt(player); float distance = Vector3.Distance(animator.transform.position, player.position); if (distance > 3) animator.SetBool("isAttacking", false); if (distance > 10) animator.SetBool("isChasing", false); } // OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { } }
как сделать так чтобы враг РАНДОМНО выбирал точку на карте и шел к ней (а при виде нас атаковал) (я буквально 0 в програмировании поэтому поясните подробно пж)
ArgumentOutORangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index Теги все навешаны правильно, AI тоже, никаких конфликтов с другими скриптами нет. Версия юнити конечно новая, но сомневаюсь, что в этом проблема, главное AI старый я установил
Ну так все же написано индекс вышел за пределы допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции.. Ошибка у вас, я как могу ее решить, не имея проэкта. Для начала уменьши коллекцию, если индексы не негативные.
Приве́т, столкнулся с такой проблемой. Сохраняю билд, запускаю, все работает нормально. Делаю какие-либо правки, но при следующем сохранении билда ничего не меняется. Менял папки и полностью удалял предыдущий билд, но не помогает. Сами изменения в проекте сохраняются, а билд не собирается новым, как первый раз собрал так и получается всегда.
@@АйтиНуб , если не сложно, сделайте, пожалуйста. Я добавил в игру уголь и он по нажатию создаёт триггер, который наносит урон как игроку, так и мобу. С игроком работает на ура, а с мобом почему-то не работает
Подскажите, что делать если все игровые механики у меня прописаны через FixedUpdate, а из-за того что на анимациях OnStateUpdate, то враг двигается дерганно если я двигаюсь относительно его.
Я уже просто устал всем повторять одно и тоже, во первых: смотрите на видео в вверхнем левом углу какая версия редактора используется, потому как в других версиях могут быть внесены изминения как например здесь (смотрите закрепленный комментарий), во вторых: внимательно смотрите и слушайте видео, если работает у меня, то и у вас все заработает, в третьих: я не могу знать, что у вас происходит в проэкте, если вас что-то там уже есть, то возможны конфликты с существующими скриптами и в четвертых: старайтесь сами решать ошибки, если хотите конечно хоть чему нибудь научиться.
Подскажите пожалуйста, у меня не появляется полотно при нажатии на кнопку Bake, как это исправить? Из за этого персонаж enemy не ходит а стоит на месте
Короче так, выбираешь статические объекты (поле, деревья, дома, которые не двигаются), потом идешь соответственно Navigation здесь во вкладке Object есть Navigation static ставишь птичку, потом идешь Bake и делаешь Bake и все. Не забудь Navmesh Agent на двигающийся объект поставить.
В окне сцены проверь чтобы было черное полупрозрачное окошко AI Navigation (в старых версиях NavMesh DIsplay) и в нем нажать галочка "Show NavMash". Если черного окошка нет, то жми в правом верхнем углу окна сцены на кнопочку с тремя вертикальными точками и выбирай Overlay Menu. В этом меню включить показ окна AI Navigation.
Отличный урок! Как всегда всё понятно=) Но есть вопрос. Чем добавление поведения мобов через add behaviour лучше создания отдельных скриптов для их контроля?
@@СветозарБоголюбоввот тут и возникает вопрос как все таки ПРАВИЛЬНО делать - единый скрипт или вот эти StateMachineBehavior? Ведь в них можно и обработку ввода сделать и таким образом и игрока тоже реализовать через эти скрипты
Рад бы по помочь да не могу. Я их не запоминаю, а проект давным давно удален, чтобы посмотреть. Единственное, что помню там вроде был еще зимний вариант в ассете. В ассет сторе напиши в поиске что то типа : medieval environment Что то похоже на этот, а может это он т есть, не помню assetstore.unity.com/packages/3d/environments/fantasy/fantasy-game-set-boundle-17002
Здравствуйте. У меня все получилось, но есть проблема, когда персонаж ходит то он тп-хается тоесть идет в перед и в друг его откинула назад и он снова идет вперёд, если нужна конкретика могу записать видео и выложить как на свой канал, так и связаться в телеграмме
Не сказать что проблема но мешает и если есть способ то как сделать так чтобы после того как моб заметил игрока он остановился (или как то так) и развернулся к игроку, просто моб после того как заметил игрока, идя боком разворачивается
Можете подсказать как сделать спавнер для этих врагов врагов? У меня есть скрипт для спавна но я не могу *объект персонажа* засунуть в таргет (враг в префабах) (Я знаю что нельзя закидывать объект в префаб как быть?)
Привет. Если на объекте есть rigidbody, то в иерархии в риджитбоди есть Constants открываешь и там есть Freeze Position и Freeze Rotation, то есть заморозить позицию или ротацию. Тебе нужно ротацию, ставишь птичку на нужном векторе, здесь у тебя вектор z скорее всего и все. Ну или замораживаешь, тот вектор или позицию какую тебе надо.
@@АйтиНуб спасибо Вам. Я использовал ранее box collider и заменил его на коллайдер капсулы и впоследствии используя вашу настройку rigidbody смог пофиксить проблему
Привет, к сожалению я без проэкта ничего сказать не могу. Кстати закрепленный коментарий читал? Может они в юнити что-то изменили и такой способ не работает на новой версии редактора.Для чистоты эксперимента надо ту же версию брать что и у меня и пробовать. Ты же видишь, что у меня все работает, значит у тебя должно.
Ты скорее всего пустую анимацию пытаешься закинуть, так естественно не будет работать. Как сделать анимацию смотри это видео с минуты 3-20 th-cam.com/video/A6JqNjSnoF8/w-d-xo.html
Туториал неплохой, наконец сделал мобу больший ИИ, чем просто ходить по карте, но у меня такой вопрос: а если мобу нужно атаковать не только игрока? Представим, что я хочу добавить в игру зомби. Он будет враждебен как к игроку, так и к рыцарю. Рыцарь аналогично, только реагирует уже на зомби. Как такое реализовать?
Тут надо все продумать так не скажу сразу, как правильно, я не профи. Некоторые вообще не так делают ии и не с тегами делают, а с компонентом, например у кого есть компонент с названием Enemy на того и нападает, то есть в инспекторе добавить скрипт с названием Enemy и там логику. Ну это так не объяснить, надо делать , пробовать.
@@НикНейм-ч3л Привет! Тоже учусь разрабатывать игры, ищу везде гайды, чтобы разбираться лучше. Если есть возможность, можно как-то связаться с тобой и увидеть как у тебя получилось реализовать такой ии? У самой допетрить не получается особо, потому надеюсь на помощь😅
Привет, не модешь подсказать что делать если враг тригириться на меня и просто бежит в мою сторону. Скрипты уже раз 10 перепроверил не работает все равно. Помоги, могу проект скинуть если надо
ПАривет. Не знаю. Это программирование, тут где угодно ошибка может быть, как я могу знать, что у тебя в проекте. Смотреть искать надо что не так. Может в расстояниях в скриптах больше меньше. Может что то с коллайдерами, может в с переменными в аниматоре что то не так.
Я не знаю, смотрите внимательно, что то где то пропустили, куда то не вставили. Mesh Agent есть на персе? Я не видел проект, как я могу что то сказать по сути, если с нуля сделали, как у меня, то все должно работать.
Походу надо установить из package managerа. Ты наверное какую то не обкатаную версию Unity редактора поставил там возможны чудеса разные. Я всегда ставлю LTS версию, она стабильна. Здесь подробнее глянь: forum.unity.com/threads/where-is-window-ai-navigation.1296018/
вылезает ошибка ("GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh. UnityEngine.StackTraceUtility:ExtractStackTrace () ) как я понял, это что-то типо "вы не навешали на navMesh на enemy" , вообще хз как фиксить, сейчас лазаю по форумам. Может сталкивался уже кто? подскажите как фиксили, пожалуйста
Смотрите коллайдеры может он его толкает чем то, мечом например, если конечно это не анимация у вас срабатывает. Старайтесь сами находить решения, я ведь не вижу ваш проект, может у вас какие-то еще скрипты конфликтуют.
Второй баг в твоем коде ты в апдейте рандомно создаешь точку куда двигаться от этого он постоянно меняет кординаты. Опять задебажил там 8 точек и каж дебаг лог выдает дич каждый кадр. Рандом надо вынести за апдейт.
Не знаю, уменя версия редактора 2021.3.0f1 там все есть, может в более новых версиях что то изменилось, куда то в другое место перенесли navigation, поищите.
Да изменилось в новых версиях. Учитесь на будущее сами искать такое, сейчас система ai navigation находится в package manager вот видео здесь th-cam.com/video/u2EQtrdgfNs/w-d-xo.html
Она там и была это на новых версиях ai navigation надо устанавливать, в старых версиях редактора она там была. В левом верхнем углу версия редактора указана.
Добрый день! На данную строку кода(8:07 или около того) выдаёт такую ошибку, не могли бы ли Вы подсказать, как это исправить? Transform pointsObject = GameObject.FindGameObjectsWithTag("Points").transform; Ошибка CS1061 "GameObject[]" не содержит определения "transform", и не удалось найти доступный метод расширения "transform", принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
В строчке "Transform pointsObject = GameObject.FindGameObjectsWithTag("Points").transform;" измени "FindGameObjectsWithTag" на "FindGameObjectWithTag", тогда всё будет работать, тоже такая проблема была
Баг в скрипте когда заносиш поинты в листовый мосив. У меня 8 поинтов заноситься в масив потом при следующем вызове этой анимации снова они же заносяться. Кароче в скрипте перед timer = 0 надо дописать points.Clear(); Ато масив разрастаеться до бесконечности. Задебажыл там 8 , 16, 25 и так далее.
Раскомментировать писанину и оставить только методы, если ты про гарячие клавиши, то можно было бы в самой программе посмотреть или в интернете Ctrl + K Ctrl + U.По ссылке в описании можно готовый скрипт скачать и не мучаться.
Спасибо. Коллайдеры на всех есть? Может с расстояниями по экспериментировать в скриптах, больше, меньше. Просто наугад здесь не скажешь, очевидно, что проблемы в самом проекте, если хочешь можешь заархивировать и выложить на гугл или яндекс диск, я посмотрю и скажу в чем проблема.
@@АйтиНуб Спасибо, вообще у меня игрок от третьего лица и я попробовала добавить asset от первого лица и все заработало однако я не понимаю почему на моего игрока не реагирует
@@ЛидаИсмагулова-о3с У тебя там проблема с контроллером и камерой, у меня почему то твой перс в другие стороны ходит, жму в лево она враво и наоборот, но это не суть. В коде все ровно. Для начала удали first person controller ведь он не нужен. Мышку тоже не выключила при игре. Короче ты должна сделать, а лучше взять уже готовый third person controller и пробовать. Я взял вот этотunityassetfree.com/file/invector-third-person-controller-basic-locomotion-template как установить свою модель можно посмотреть в этом видео th-cam.com/video/MQAj4ppKOoM/w-d-xo.html где то с 5 минуты. Я правда пробовал с ихним ботом, все работало прекрасно, но с твоей моделью присутствуют артефакты. Короче вывод с врагом и скриптами все хорошо, а вот проблема есть в контроллере. Если будешь пробовать то выставляй координаты игрока на позиции в инспекторе transform position по x = -410, по y = 0.2 и по z = 120, чтобы долго не мучилась и на место возле врага сразу встал персонаж. Я предлагаю пробовать или с этим контроллером или подобрать любой другой на сайте есть выбор. Я еще посмотрю, если найду как сделать сниму видео и вышлю. А пока пробуй сама, главное все ненужное всегда удаляй, чтобы не было в сцене куча контроллеров, камер и прочего, а то они конфликтуют. Врага не трогаешь и скрипты с ним связанные, а ищещь контроллер или пишешь свой.
Смотри, у меня здесь старая версия редактора, у тебя скорее всего новая уже обновленная, поэтому может у них что-то там поменялось уже. Когда наводишь курсор ничего не написано?
@@sergeygornostaev328 Если кружится на месте значит не видит куда ему идти. NavMesh Agent стоит? Наугад не могу помочь тебе, хочешь кинь прект скажу ошибку.
@@killmersy2504 На любом объекте, если ты хочешь чтобы через него что-то пролетало наскыозь, должен висеть коллайдер. Например у тебя персонаж стоит на земле, у нее есть коллайдер в инспекторе, если ты уберещь его, то персонаж провалится в бездну. На персонаже и на стенах должны быть коллайдеры.
Ну и третий баг ты скопировал таймер он не дожыдаеться пока он дойдет до точки. И тупо меняет направление. Тоести по истечению 10 секунд поф дошел нет менят точку.
Спасибо. Дело в том, что в моих именно и не только в моих видео не есть решение для создания полноценной игры, а так сказать подсказка к дальнейшем вашим действием. То есть вы должны сами освоить программирование, но опираясь на какие то методы в моих видео. На платных курсах или уроках там уже серьезная разработка, а здесь чтобы хотя бы вы поняли что к чему.
Можно сделать как с харвесторами в стратегиях, когда они ждут своей очереди что бы войти в здание и отдать ресурсы То есть, сделать так что если в точке уже находится патрульныц, то другой патрульный туда не шёл Это можно сделать таким образом Создать класс объекта и там вписать геймобджект патрульный И метод которая говорит кто этот патрульный и который убирает его а в патрульном сделать проверку на состояние поля геймобджекта, если он null то можно смело идти, а если нет то ищем другой Это проблема всех NavMeshAgent-ов, мы им даём один пункт и они всеми силами пытаются туда добраться, и друг с другом как будто в толчки играют
В новых версиях по моему устанавливать надо в package manager. Вот видео может поможет th-cam.com/video/u2EQtrdgfNs/w-d-xo.html И на будущее, там постоянно что то будет в unity меняться, так что ищите или в гугле или на официанльном сайте какие обновления в каких версиях были. Вот результаты www.google.com/search?client=firefox-b-d&q=ai+navigation+in+unity
помогите исправить ошибки пожалуйста 1) NullReferenceException: Object reference not set to an instance of an object PatrolBehaviour.OnStateUpdate (UnityEngine.Animator animator, UnityEngine.AnimatorStateInfo stateInfo, System.Int32 layerIndex) (at Assets/scripts/PatrolBehaviour.cs:37) 2) "GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh. UnityEngine.StackTraceUtility:ExtractStackTrace () PatrolBehaviour:OnStateUpdate (UnityEngine.Animator,UnityEngine.AnimatorStateInfo,int) (at Assets/scripts/PatrolBehaviour.cs:30) обе ошибки появляються при анимации хождения при этом все анимации работают проверил все теги и названия может ли это быть из-за того что враг состоит из нескольких объектов?
Внимание! В этом видео еще используется старая система навигации, вот видео в котором подробно описано где найти новую систему навигации и как ей пользоваться th-cam.com/video/nQQ7I603ANw/w-d-xo.html.
Можете помоч пож🙏🙏🙏 transform в PatrolBehaviour выдаёт ошибку 14 строка
говорит что GameObject не содержит определение transform
У меня патруь вообще не работает, исправил вышеописанные прорблемы и всё равно он просто стоит
@@---eu1ki Не знаю может в более новых версиях редактора что-то поменяли, они постоянно что -то куда-то переносят, переназывают, так что трудно сказать, навигацию они там перенесли. Кстати теги все есть, все подключены, скрипт из описания взят? Тогда только проект смотреть надо. Если на ту же версию что у меня и все также сделать, то все заработает.
@@АйтиНуб а какая у вас версия
Еще кто будет пользоваться этим видео, имейте ввиду, здесь используется устаревшая (Obsolete) система AI Navigation. Как минимум с 2022 новая перенесена в плагин и устанавливается через Package Manager (надо проверить и установить, если ее нет в Packages) и устроена чуть по-другому.
а что за плагин, если не секрет?
@@novaneti NavMeshComponents если не ошибаюсь
Его можно найти в уроках про этот самый NavMesh
Расскажи как надо устанавливать, а то у меня не получается
Новая система кстати дерьмо
@@Ablatytu_ А почему ?
Единственный кто нормально объяснил спасибо
Уже какой твой гайд смотрю все класс!!! ТЫ ЛУЧШИЙ продолжай в томже духе😁👍
Привет, не останавливайся пожалуйста, ты помогаешь очень многим людям, ты лучший, веди стримы, тебе миллионы донатить будут, респект тебе мужик, ты единственный человек на ютубе, который по этой теме, что то годное сделал
Спасибо. Но, к сожалению я уже все. Во первых нет времени, во вторых Unity разочаровал меня. А в третьих TH-cam разочаровал за 3 года $100 вывел. Так что пока по крайней мере гастроли закончены. Насчет донатить я бы не сказал, а вот если бы какой то нормальный курс записать, то может и что-то и заработать.
@@АйтиНуб ждем курс
@@АйтиНуб просто не вовремя с ютубом, когда минимизацию убрали
Парень, не знаю прочтёшь, не прочтёшь этот коммент, но надеюсь у тебя будет все заебись
@@АйтиНуб дорогой автор,
скажи пожалуйста
в чём тебя разочаровал Unity?
что делать если у меня не перебрасываются анимации но там есть loop time
Не знаю, что любая анимация с loop time не работает?
спасибо за туториал
очень помог , у меня бейк теперь роботает 🥰
Очень не гибкое решение с точками патрулирования. Что если врагов несколько и у них разные точки? Такое решение не подойдет. Искать точки по тегам через find() да еще в скрипте анимации - супернеудобно, да и вообще find это грешновато. Тут напрашивается перенести список точек в конкретного врага через сериализуемое поле. А через параметр аниматор в методах обработки событий анимаций находить нужного врага и менять ему состояние на требуемое в нужные моменты.
Здравствуйте, ролик отличный, я лайк поставил и подписался! Но единственное, у меня почему-то при переходе из состояния покоя в патрулирование, враг начинает анимацию патрулирования, но остаётся на месте, а затем снова в состоянии покоя и так по кругу. Я ваш код скопировал из гугл диска, сделав как на видео, но не работает(
Когда вставляешь мой код смотри, чтобы у тебя все объекты и переменные точно ткже назывались, или меняй названия в коде, очень часто делают эту ошибку. Потом в коде у тебя могут быть разные расстояния, когда начинать анимацию, еще посмотри есть ли на всех объектах коллайдеры и риджидбоди и проверь их настройки. Дальше видео делалось на старой версии редактора, может уже что то не так работать, короче тут нюансов много может быть, без проекта не скажешь. Пойми это не ассет, что ты вставил и он у тебя заработал, это видео, чтобы более менее понять как это работает.
Интересно а можно сделать так чтобы можно было регулировать поле зрения врага?
Конечно можно, но у меня пока такого нет, надо отдельно урок снимать, в сети их полно есть или готовый ассет взять можно.
Все работает спасибо. Есть два нюанса. Устанавливал такой же набор как у вас (его обновили). Посмотрел видео, которое вы прикрепили в комментариях, так как у меня Unity 2023. Мой NPC крутится вокруг поинтов, в то время как ваш этого не делает. Также иногда он останавливается и бежит на месте. Может быть, это связано с тем, что на террейн есть деревья, хотя их немного. И у меня есть NavMesh Surface (с другого вашего видео), в Navigation есть Bake. Причем удаляя один из них, NPC начинает крутиться вокруг одного поинта, но не бегает к остальным. Не знаю что делать. Буду благодарен за помощь. Еще раз спасибо
Я уже не занимаюсь этим, так что, к сожалению ничем помочь не могу.
@@АйтиНуб очень жаль, но я всё равно хочу поблагодарить вас за то, что вы этим занимались. Ваши видео помогли научиться чему-то новому, пробовать и экспериментировать и я думаю, что не только мне. Я верю, что вы будете развиваться в той сфере, которая вас интересует. На ютубе не очень много видео, в которых подробно объясняют как вы. Еще раз спасибо
@@АйтиНуб очень жаль, но я все равно хочу поблагодарить вас за то, что вы этим занимались. Ваши видео помогли научиться чему-то новому, пробовать и экспериментировать и я думаю, что не только мне. Я верю, что вы будете развиваться в той сфере, которая вас интересует. На ютубе не очень много видео, в которых подробно объясняют как вы. Еще раз спасибо
У меня не идёт к Points. Анимации срабатывают на месте, и меняются в зависимости от таймера. Но сам Enemy не движется никуда.
Bake сделали? Navmesh Agent стоит? Скрипты все правильно подключены, переменные имеют такие же названия как в иерархии и аниматоре, как и в скриптах? Действия производились на чистую сцены или там уже куча всего стояло, что может конфликтовать? Коллайдеры, риджидбоди везде на всех объектах правильно стоят, как в видео? Данные в скриптах, расстояния разные тоже может надо поменять ()меньше, больше например) Ищите ошибку, если работает в видео, то и везде будет работать, по другому не может быть.
@@АйтиНуб я применял ваш способ на 2D объект, не работает оно нормально. Сейчас ищу как сделать мирного NPC, который бы просто ходил влево и вправо останавливаясь на отдых секунд на 5.
у меня проблема застрял на стадии патрюля у меня не пригруеться анимация ходьбы и он двигаеться на половину утопленный в карту полностью замерши помогите решить
Наполовину у топленный это из за это коллайдера, старайтесь сразу выставлять все координаты на ноль и смотреть координаты коллайдеров на объектах. Такое бывает с готовыми ассетами или моделями, просто коллайдер выровняйте с вашим объектом. С анимацией может быть переменная не работает, может с расстояниями надо что-то сделать, увеличить например, надо самому смотреть, так не сказать без проекта. Поймите, что все видео делались на чистую сцену с нуля, то есть если у вас уже что то там было, могут быть разные конфликты. А если взять внимательно сделать все с нуля и ничего не пропустить, то все будет работать.
Добрый день! Пишу по вашему гайду свой ИИ, но он всего лишь стоит на месте и дальше не двигается, все скрипты прописаны и закреплены, в чем может быть дело?
Привет. Если скрипты у меня брали, то проверьте, чтобы названия переменных и объектов совпадали из скриптов в сцене и аниматоре. MeshAgent стоит на персонаже? Bake делали? Ошибки, логи выбивает? Каких то других скриптов нету, ничего конфликтовать не может? Если анимации не срабатывает, то искать соответственно в этом направлении, если не перемещается, то MeshAgent.
привет у меня почеу то не совсем так как у тебя
скинь пожалуйста этот юнити проект на гугл драйв тут в коменты,в ответе мне надо очень 🥺🥺🥺
Привет. Да я бы скинул, если бы он у меня был, я все удаляю где то после второго месяца. А что не так именно? Если на чистый проект, то все должно быть так же как здесь.
У меня проект уже 2 месяца как бы.
А ну когда я включаю бейк
То у меня эта синяя штука не активируется
Хотя я делаю всё как на видео выделяю все эти объекты (((
@@krishovie У тебя, когда ты статические объекты выбираешь в инспекторе в самом вверху справа возле названия есть чек поинт Static, он должен быть включен. У меня просто по умолчанию был включен поэтому я не обратил внимание на это.
Aaaaa спс
Если что ещё раз напишу
Если что
Спасибо большое, но есть вопрос почему после того как враг сдвинулся с 1 точки ко 2 то он там и остаёься и начинает кружится на ней?
такая же херня
Нужно было выбрать другую анимацию
@@sookoshvily2037 спасибо помогло
@@x0bra не за что)
Всё круто, враг патрулирует территорию, преследует персонажа, поворачивается в его сторону, но почему-то у него не работают анимации, с чем это может быть связано?
Вопрос решён
Спасибо вашему каналу!
Привет, если не затруднит, скажи пожалуйста, на какой версии юнити был записан этот гайд
Привет 2020.3.25f1 сверху слева все написано. На новых тоже самое только систему навигации надо ставить самому, закрепленный комментарий сверху.
помогите пожалуйста когда я хочу сделать скрипты захожу в visual studio а там не те папки с командами а появляются какие то другие
Очень помогли спасибо! Хорошие уроки у вас
Рад был помочь.
а уменя почемуто он идет к первой точке и больше некуда не идет стоит на одном месте(
Мда, у меня такое было, но уже не вспомню как решил, по моему, что-то забыл куда то вставить или переменную, помню, что какая то ерунда. Но здесь по видео уже все нормально должно быть, если скрипт в описании брали то смотрите на названия переменных и объектов, чтобы совпадали с теми что в проекте, также может расстояния в скриптах не правильно, бейк сделали?. Здесь много чего может быть, без проекта не скажешь. Если точно делать , все вниматнльно как на видео на чистую сцену, то все работает.
👍
у меня такая проблема у меня нпс проваливается под землю когда я с ним сталкиваюсь, как можно это исправить я уже все перепробовал. не именно проваливается в бесконечность под карту а как бы нагибается от соприкосновения со мной
К сожалению я стаким никогда не сталкивался, коллайдеры на всех объектах отстроены правильно?
Помоги,а что если из анимаций у меня idle,patrol,attack?Просто когда я все это зделал мой враг стоит в idle позиции и не атакует меня и вовще не видет.У меня тег Player
Если скрипты скачал в описании, то смотри, чтобы у тебя в проекте все переменные имели такие же названия, как и в скриптах. Компоненты в инспекторе все есть, коллайдеры например у объектов.
Теперь просто пробегает в сквозь меня бесконечно
Коллайдеры есть на объектах?
В компоненте "NawMeshAgent" увеличь параметр "Stopping Distance" (до 5 например)
Здравствуйте. AI видит player даже через стены. Есть варианты как исправить?
К сожалению, я с юнити уже давно распрощался, ничего сказать не могу.
Как прописать в срипте , чттбы у врага был угол обзора, попадая в который он агрится на игрока ? Я пробовал по своему сделать , но не вышло у меня
он бегал только к одной точке. решение:
у вас было пара ошибок, вот скрипты правильные:
IdleBehaviour:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IdleBehaviour : StateMachineBehaviour
{
float timer;
Transform player;
float chaseRange = 10;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
timer = 0f;
player = GameObject.FindGameObjectWithTag("Player").transform;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
timer += Time.deltaTime;
if (timer > 2) {
timer = 0f;
animator.SetBool("isPatrolling", true);
}
float distance = Vector3.Distance(animator.transform.position, player.position);
if (distance < chaseRange) {
animator.SetBool("isChasing", true);
timer = 0f;
}
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
}
PatrolBehaviour:
using UnityEngine.AI;
using System.Collections.Generic;
using UnityEngine;
public class PatrolBehaviour : StateMachineBehaviour
{
float timer;
int random;
List points = new List();
NavMeshAgent agent;
Transform player;
float chaseRange = 10;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
timer = 0;
Transform pointsObject = GameObject.FindGameObjectWithTag("Points").transform;
foreach (Transform t in pointsObject)
points.Add(t);
random = Random.Range(0, 9);
agent = animator.GetComponent();
agent.SetDestination(points[random].position);
player = GameObject.FindGameObjectWithTag("Player").transform;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (agent.remainingDistance 5) {
animator.SetBool("isPatrolling", false);
timer = 0f;
}
float distance = Vector3.Distance(animator.transform.position, player.position);
if (distance < chaseRange) {
animator.SetBool("isChasing", true);
timer = 0f;
}
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
agent.SetDestination(agent.transform.position);
}
}
ChaseBehaviour:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class ChaseBehaviour : StateMachineBehaviour
{
NavMeshAgent agent;
Transform player;
float attackRange = 2;
// float chaseRange = 10;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
agent = animator.GetComponent();
agent.speed = 4;
player = GameObject.FindGameObjectWithTag("Player").transform;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
agent.SetDestination(player.position);
float distance = Vector3.Distance(animator.transform.position, player.position);
if (distance < attackRange)
animator.SetBool("isAttacking", true);
if (distance > 10)
animator.SetBool("isChasing", false);
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
agent.SetDestination(agent.transform.position);
agent.speed = 2;
}
}
AttackBehaviour:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AttackBehaviour : StateMachineBehaviour
{
Transform player;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
player = GameObject.FindGameObjectWithTag("Player").transform;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.transform.LookAt(player);
float distance = Vector3.Distance(animator.transform.position, player.position);
if (distance > 3)
animator.SetBool("isAttacking", false);
if (distance > 10)
animator.SetBool("isChasing", false);
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
}
как сделать так чтобы враг РАНДОМНО выбирал точку на карте и шел к ней (а при виде нас атаковал) (я буквально 0 в програмировании поэтому поясните подробно пж)
th-cam.com/video/-ctJjlZl2s8/w-d-xo.htmlsi=mjkYP_FY_Uql1Xjb
ArgumentOutORangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Теги все навешаны правильно, AI тоже, никаких конфликтов с другими скриптами нет. Версия юнити конечно новая, но сомневаюсь, что в этом проблема, главное AI старый я установил
Ну так все же написано индекс вышел за пределы допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции.. Ошибка у вас, я как могу ее решить, не имея проэкта. Для начала уменьши коллекцию, если индексы не негативные.
@@АйтиНуб так у меня всего 4 объекта в коллекции
@@АйтиНубя могу вам проект тогда скинуть? Потому что даже в пустом проекте, та же самая ошибка
А если у меня нету вкладки AI, что делать ?
В плане нету вкладки?
когда я захожу в меню Window там нету такой кнопки AI@@thompson2491
Тогда смотреть мой закрепленный комментарий.
Приве́т, столкнулся с такой проблемой.
Сохраняю билд, запускаю, все работает нормально. Делаю какие-либо правки, но при следующем сохранении билда ничего не меняется. Менял папки и полностью удалял предыдущий билд, но не помогает. Сами изменения в проекте сохраняются, а билд не собирается новым, как первый раз собрал так и получается всегда.
Попробуй просто новый билд в другом месте сохранить.
А как сделать, допустим, ядовитое облако, находясь в котором, моб будет получать урон.
Для меня это большая проблема
Не делал, не знаю.
@@АйтиНуб , если не сложно, сделайте, пожалуйста. Я добавил в игру уголь и он по нажатию создаёт триггер, который наносит урон как игроку, так и мобу.
С игроком работает на ура, а с мобом почему-то не работает
Подскажите, что делать если все игровые механики у меня прописаны через FixedUpdate, а из-за того что на анимациях OnStateUpdate, то враг двигается дерганно если я двигаюсь относительно его.
Здравствуйте а что делать если у меня персонаж просто прямо бежит
Я уже просто устал всем повторять одно и тоже, во первых: смотрите на видео в вверхнем левом углу какая версия редактора используется, потому как в других версиях могут быть внесены изминения как например здесь (смотрите закрепленный комментарий), во вторых: внимательно смотрите и слушайте видео, если работает у меня, то и у вас все заработает, в третьих: я не могу знать, что у вас происходит в проэкте, если вас что-то там уже есть, то возможны конфликты с существующими скриптами и в четвертых: старайтесь сами решать ошибки, если хотите конечно хоть чему нибудь научиться.
Подскажите пожалуйста, у меня не появляется полотно при нажатии на кнопку Bake, как это исправить? Из за этого персонаж enemy не ходит а стоит на месте
Короче так, выбираешь статические объекты (поле, деревья, дома, которые не двигаются), потом идешь соответственно Navigation здесь во вкладке Object есть Navigation static ставишь птичку, потом идешь Bake и делаешь Bake и все. Не забудь Navmesh Agent на двигающийся объект поставить.
В окне сцены проверь чтобы было черное полупрозрачное окошко AI Navigation (в старых версиях NavMesh DIsplay) и в нем нажать галочка "Show NavMash". Если черного окошка нет, то жми в правом верхнем углу окна сцены на кнопочку с тремя вертикальными точками и выбирай Overlay Menu. В этом меню включить показ окна AI Navigation.
Видео очень хорошее объясняете тоже хорошо но почему я не могу использовать Bake в Navigation?
Спасибо за отзыв. Выделяешь все статические объекты: здания, деревья и т.д и нажимаешь bake. Должно работать.
У меня заработало только когда я все объекты сделала дочерними для одного из них, может у Вас также
@@buter_s_sirom Например точки должны иметь общего родителя. Да и вообще группировать надо, чтобы легче было потом.
8:26 что за t? У меня юнити ругается, пишет что в этом контексте нельзя употреблять t !
Ищите ошибку, как видите здесь все работает.
@@АйтиНуб все исправил , спасибо
у меня происходит баг когда у врага начинается анимация ударов то он так застывает в этой анимации и стоит на месте.Что делать?
Сама анимация отдельно работает нормально, loop включен?
@@АйтиНуб да, все включено и отдельно работает
@@НатальяПеревалова-х7х Тогда надо смотреть самому, что с ним происходит, тут неугадаешь. С коллайдерами персонажа тоже все нормально?
Отличный урок! Как всегда всё понятно=)
Но есть вопрос. Чем добавление поведения мобов через add behaviour лучше создания отдельных скриптов для их контроля?
Только тем, что здесь события анимаций отлавливаются. Но точно так же их можно и другими методами проверять в едином скрипте врага.
@@СветозарБоголюбоввот тут и возникает вопрос как все таки ПРАВИЛЬНО делать - единый скрипт или вот эти StateMachineBehavior? Ведь в них можно и обработку ввода сделать и таким образом и игрока тоже реализовать через эти скрипты
Подскажите пожалуйста, как называется карта в assets store
Рад бы по помочь да не могу. Я их не запоминаю, а проект давным давно удален, чтобы посмотреть. Единственное, что помню там вроде был еще зимний вариант в ассете. В ассет сторе напиши в поиске что то типа : medieval environment Что то похоже на этот, а может это он т есть, не помню assetstore.unity.com/packages/3d/environments/fantasy/fantasy-game-set-boundle-17002
@@АйтиНуб Спасибо большое
Здравствуйте. У меня все получилось, но есть проблема, когда персонаж ходит то он тп-хается тоесть идет в перед и в друг его откинула назад и он снова идет вперёд, если нужна конкретика могу записать видео и выложить как на свой канал, так и связаться в телеграмме
Не сказать что проблема но мешает и если есть способ то как сделать так чтобы после того как моб заметил игрока он остановился (или как то так) и развернулся к игроку, просто моб после того как заметил игрока, идя боком разворачивается
@@Itzkolyu4ka К сожалению я юнити уже не занимаюсь давно, ничем помочь не могу, сам пробуй, только так и научишся.
Автор, больше спасибо
Можете подсказать как сделать спавнер для этих врагов врагов? У меня есть скрипт для спавна но я не могу *объект персонажа* засунуть в таргет (враг в префабах) (Я знаю что нельзя закидывать объект в префаб как быть?)
Так сходу подсказать не могу, могу лишь по советовать готовый ассет взять, вот здесь например unityassetfree.com/search?search=spawn&submit=.
Здравствуйте, возникла проблема - при контакте врага с игроком, враг заваливается на бок падая на 90% не подскажите как это можно исправить?
Привет. Если на объекте есть rigidbody, то в иерархии в риджитбоди есть Constants открываешь и там есть Freeze Position и Freeze Rotation, то есть заморозить позицию или ротацию. Тебе нужно ротацию, ставишь птичку на нужном векторе, здесь у тебя вектор z скорее всего и все. Ну или замораживаешь, тот вектор или позицию какую тебе надо.
@@АйтиНуб спасибо Вам, но к сожалению это не помогло. Персонаж продолжает ложиться на бок под Х rotation - 90. Можно ли ещё как - то это решить?
Попробуй вместе с z поворот по х заморозить
@@Ignis_Guido Можно, если я увижу этот проект, хочешь скинь на гугл или яндекс диск, я посмотрю.
@@АйтиНуб спасибо Вам. Я использовал ранее box collider и заменил его на коллайдер капсулы и впоследствии используя вашу настройку rigidbody смог пофиксить проблему
Кто нибудь сталкивался с багом:если фпс контролер выше определеного уровня, враг падает и бьет снизу вверх. Подскажите пожалуйста как решить
В смысле выше уровня?
@@АйтиНуб если fps контролёр становится выше врага, враг смотрит на него и атакует, вися как бы в воздухе
Хэлп
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
У мень была такая же проблема. Сделай список не с Transform а с GameObject. Потом обращаяся не .position, а .transform.position.😅😊
@@никитаковалев-к5у Привет, у тебя не осталось кода?
@@никитаковалев-к5у а можно поподробнее как это сделать и что заменить в коде
Привет. У Меня не работает хотя всё также, я даже сделал анимацию хотя её нету, и всё равно не работает, как так
Привет, к сожалению я без проэкта ничего сказать не могу. Кстати закрепленный коментарий читал? Может они в юнити что-то изменили и такой способ не работает на новой версии редактора.Для чистоты эксперимента надо ту же версию брать что и у меня и пробовать. Ты же видишь, что у меня все работает, значит у тебя должно.
как переместить анимацию в аниматор не получается просто перемещением
Ты скорее всего пустую анимацию пытаешься закинуть, так естественно не будет работать. Как сделать анимацию смотри это видео с минуты 3-20 th-cam.com/video/A6JqNjSnoF8/w-d-xo.html
здравствуйте а как сделать чтобы бот ходил не по точкам а по всей карте
Привет. К сожалению, не знаю, так как сам такого не делал.
Туториал неплохой, наконец сделал мобу больший ИИ, чем просто ходить по карте, но у меня такой вопрос: а если мобу нужно атаковать не только игрока? Представим, что я хочу добавить в игру зомби. Он будет враждебен как к игроку, так и к рыцарю. Рыцарь аналогично, только реагирует уже на зомби. Как такое реализовать?
Тут надо все продумать так не скажу сразу, как правильно, я не профи. Некоторые вообще не так делают ии и не с тегами делают, а с компонентом, например у кого есть компонент с названием Enemy на того и нападает, то есть в инспекторе добавить скрипт с названием Enemy и там логику. Ну это так не объяснить, надо делать , пробовать.
@@АйтиНуб , у меня появилась идея. Как только это будет реализовано, я могу сообщить
@@НикНейм-ч3л Ok
@@АйтиНуб , есть хорошая новость. Кажись, я смог это реализовать. Есть ВК или Дискорд?
@@НикНейм-ч3л Привет! Тоже учусь разрабатывать игры, ищу везде гайды, чтобы разбираться лучше. Если есть возможность, можно как-то связаться с тобой и увидеть как у тебя получилось реализовать такой ии? У самой допетрить не получается особо, потому надеюсь на помощь😅
Привет, не модешь подсказать что делать если враг тригириться на меня и просто бежит в мою сторону. Скрипты уже раз 10 перепроверил не работает все равно. Помоги, могу проект скинуть если надо
ПАривет. Не знаю. Это программирование, тут где угодно ошибка может быть, как я могу знать, что у тебя в проекте. Смотреть искать надо что не так. Может в расстояниях в скриптах больше меньше. Может что то с коллайдерами, может в с переменными в аниматоре что то не так.
Спасибо тебе все получилось
А что делать если перс бежит просто в перед, хотя сферы стоят и всю область выделил bake?
Я не знаю, смотрите внимательно, что то где то пропустили, куда то не вставили. Mesh Agent есть на персе? Я не видел проект, как я могу что то сказать по сути, если с нуля сделали, как у меня, то все должно работать.
поставь свойство "static" на недвижимых обьектах
Почему у меня во вкладке Window нет строчки с Ai, кто-то сталкивался. Версия 2022.2
Походу надо установить из package managerа. Ты наверное какую то не обкатаную версию Unity редактора поставил там возможны чудеса разные. Я всегда ставлю LTS версию, она стабильна. Здесь подробнее глянь:
forum.unity.com/threads/where-is-window-ai-navigation.1296018/
АйтиНуб привет!
У меня возникла такая проблемка что юнити не распознаёт float и deltaTime подскажи пожалуйста что делать в таких случаях?
Как это не распознает? Такого не может быть. Код по ссылке скачивал?
Нет, а где ссылка?
В описании, естественно.
@@АйтиНуб спасибо большое
Можете помочь, почему у меня он атакует один раз и встаёт?
В анимации удара loop включен, посмотри птичка в loop есть.
Что делать если нет анимации покоя и других анимаций? Мне они не нужны (неважно почему) и у меня их нет . Что делать?
Не понял!? Что у тебя за игра такая?
@@АйтиНуб Я делаю про унитаз)
@@АйтиНуб Это просто от нечего делать игра , про унитаз , где не нужны ему анимации =)
@@Осуждающий-и8с Просто действие на кнопку если, то выбирай кнопку и по нажатию выполняй нужное действие.
@@Осуждающий-и8сахахах
вылезает ошибка ("GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh.
UnityEngine.StackTraceUtility:ExtractStackTrace () ) как я понял, это что-то типо "вы не навешали на navMesh на enemy" , вообще хз как фиксить, сейчас лазаю по форумам. Может сталкивался уже кто? подскажите как фиксили, пожалуйста
это где-то в скрипте патруля
Я не поздно? Добавь нав меш на врага, и запеки пространство для передвижения
Что делать если когда враг подходит он ложится
Смотрите коллайдеры может он его толкает чем то, мечом например, если конечно это не анимация у вас срабатывает. Старайтесь сами находить решения, я ведь не вижу ваш проект, может у вас какие-то еще скрипты конфликтуют.
Второй баг в твоем коде ты в апдейте рандомно создаешь точку куда двигаться от этого он постоянно меняет кординаты. Опять задебажил там 8 точек и каж дебаг лог выдает дич каждый кадр. Рандом надо вынести за апдейт.
Класс!
Эти скрипты из описания можно скачать и вставить в юнити?
да
Привет, не подскажешь как обратиться к скрипту на аниматоре из другого скрипта?
А если нету меню Bake
Смотри закрепленный комментарий.
а что делать если враг при погони бежит на месте?
Ошибки ищите. Я же не вижу ваш проект, как я могу знать.
Что делать если во вкладке виндус нету раздела Al
Не знаю, уменя версия редактора 2021.3.0f1 там все есть, может в более новых версиях что то изменилось, куда то в другое место перенесли navigation, поищите.
Да изменилось в новых версиях. Учитесь на будущее сами искать такое, сейчас система ai navigation находится в package manager вот видео здесь th-cam.com/video/u2EQtrdgfNs/w-d-xo.html
@@АйтиНуб спасибо
Вот только не понял как вкладка AI в Window появилась
Она там и была это на новых версиях ai navigation надо устанавливать, в старых версиях редактора она там была. В левом верхнем углу версия редактора указана.
@@АйтиНуб вкладки Bake нету
Добрый день! На данную строку кода(8:07 или около того) выдаёт такую ошибку, не могли бы ли Вы подсказать, как это исправить?
Transform pointsObject = GameObject.FindGameObjectsWithTag("Points").transform;
Ошибка CS1061 "GameObject[]" не содержит определения "transform", и не удалось найти доступный метод расширения "transform", принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Привет, коды по ссылке брали? Теги стоят? Названия с названиями в скрипте совпадают?
В строчке "Transform pointsObject = GameObject.FindGameObjectsWithTag("Points").transform;" измени "FindGameObjectsWithTag" на "FindGameObjectWithTag", тогда всё будет работать, тоже такая проблема была
@@alex25loks вы даже не представляете на сколько я вам благодарен
@@user-lx7ng6ob5l Всегда пожалуйста
Здравствуйте, попробуйте так. GameObject[] poibtObject = GameObject.FindGameObjectsWithTag("Points").transform;
А что делать если нет пункта Ai?
Какого пункта AI и где нету, конкретнее? UnityEngine.AI это пространство имен.
У меня проблема когда я тестирую игру на андроид то, на телефоне враги двигаются но не перемешаются, интересно почему?
Кажется проблема в NavMeshAgent
@@SaOzdздравствуйте,вы смогли решить?
Баг в скрипте когда заносиш поинты в листовый мосив. У меня 8 поинтов заноситься в масив потом при следующем вызове этой анимации снова они же заносяться. Кароче в скрипте перед timer = 0 надо дописать points.Clear(); Ато масив разрастаеться до бесконечности. Задебажыл там 8 , 16, 25 и так далее.
5:51 как это сделать? Я не понимаю, на какие клавишу нужно нажимать
Раскомментировать писанину и оставить только методы, если ты про гарячие клавиши, то можно было бы в самой программе посмотреть или в интернете Ctrl + K Ctrl + U.По ссылке в описании можно готовый скрипт скачать и не мучаться.
@@АйтиНуб Большое спасибо за ответ
Что делать если у меня что-то с кодом не то вроде все правильно и копировал код имам делал все равно не получается
А я откуда могу знать, что у тебя с кодом, я пока даром ясновидения не обладаю. ) Скрипт можно скачать в описании.
@@АйтиНуб Вроде больше нет ошибок но теперь он бесконечно стоит на месте
@@daniilloparev947 Я что могу? У меня твоего проекта нет, как я могу знать, что там.
Вышли проект, если хочешь я скажу в чем проблема.
@@АйтиНуб да
Очень понравился ваш урок, но у меня враг не реагирует на игрока хотя я tag на игрока наложила. Патруль работает а остальное нет
Спасибо. Коллайдеры на всех есть? Может с расстояниями по экспериментировать в скриптах, больше, меньше. Просто наугад здесь не скажешь, очевидно, что проблемы в самом проекте, если хочешь можешь заархивировать и выложить на гугл или яндекс диск, я посмотрю и скажу в чем проблема.
@@АйтиНуб Спасибо, вообще у меня игрок от третьего лица и я попробовала добавить asset от первого лица и все заработало однако я не понимаю почему на моего игрока не реагирует
@@ЛидаИсмагулова-о3с ОК. Еще бы доступ открыть, было бы хорошо, а то я без доступа скачать то не могу.
@@ЛидаИсмагулова-о3с У тебя там проблема с контроллером и камерой, у меня почему то твой перс в другие стороны ходит, жму в лево она враво и наоборот, но это не суть. В коде все ровно. Для начала удали first person controller ведь он не нужен. Мышку тоже не выключила при игре. Короче ты должна сделать, а лучше взять уже готовый third person controller и пробовать. Я взял вот этотunityassetfree.com/file/invector-third-person-controller-basic-locomotion-template как установить свою модель можно посмотреть в этом видео th-cam.com/video/MQAj4ppKOoM/w-d-xo.html где то с 5 минуты. Я правда пробовал с ихним ботом, все работало прекрасно, но с твоей моделью присутствуют артефакты. Короче вывод с врагом и скриптами все хорошо, а вот проблема есть в контроллере. Если будешь пробовать то выставляй координаты игрока на позиции в инспекторе transform position по x = -410, по y = 0.2 и по z = 120, чтобы долго не мучилась и на место возле врага сразу встал персонаж. Я предлагаю пробовать или с этим контроллером или подобрать любой другой на сайте есть выбор. Я еще посмотрю, если найду как сделать сниму видео и вышлю. А пока пробуй сама, главное все ненужное всегда удаляй, чтобы не было в сцене куча контроллеров, камер и прочего, а то они конфликтуют. Врага не трогаешь и скрипты с ним связанные, а ищещь контроллер или пишешь свой.
@@АйтиНуб Хорошо ,спасибо большое за подробное объяснение
Что делать если персонаж в пол уходит?
Проверте коллайдеры на персонаже.
Проблема решена, еще подскажите как настроить персонажа чтобы он терял игрока но не так быстро
@@PwaweDafe К сожалению ничего не могу сказать я уже юнити не занимаюсь.
@@PwaweDafe К сожалению, я с юнити уже давно распрощался, ничего сказать не могу.
кто может подсказать почему у меня в 14 строке транмформ подчёркнуто?
Смотри, у меня здесь старая версия редактора, у тебя скорее всего новая уже обновленная, поэтому может у них что-то там поменялось уже. Когда наводишь курсор ничего не написано?
@@АйтиНуб я уже разобрался я просто из вашего скрипта который прикреплён к ролику взял эту строку и вставил в свой скрипт и у меня всё заработало
урок хороший, но шрифт в vs нужно больше делать
В более новых видео уже сделан, да и скрипт готовый есть в описании.
@@АйтиНуб спасибо, понял не буду бухтеть
@@user-zq7hq2ix4f Ничего страшного, я сам виноват, лопухнулся по началу.
Сразу лайк авансом. И я первый)
привет) а у меня почему ходит к одной точке(
Внимательно смотрите, что то не сделали значит. Все точки добавили в массив?
@@АйтиНуб У вас анимации Generic ,а с humanoid остается кружится на месте
@@sergeygornostaev328 Если кружится на месте значит не видит куда ему идти. NavMesh Agent стоит? Наугад не могу помочь тебе, хочешь кинь прект скажу ошибку.
А как сделать так чтоб им не проходил сквозь стены
Он и не должен проходить, если у тебя везде есть коллайдеры на всех объектах и соответственно правильно настроены.
@@АйтиНуб ну я создал ИИ и он проходит через стен а я меш рендер включил
@@killmersy2504 Коллайдер на нем есть и на стенах причем здесь меш. Коллайдеры соприкасаются и не пускают, это как барьер.
@@АйтиНуб то есть дело не в стенах а в ИИ
@@killmersy2504 На любом объекте, если ты хочешь чтобы через него что-то пролетало наскыозь, должен висеть коллайдер. Например у тебя персонаж стоит на земле, у нее есть коллайдер в инспекторе, если ты уберещь его, то персонаж провалится в бездну. На персонаже и на стенах должны быть коллайдеры.
Ну и третий баг ты скопировал таймер он не дожыдаеться пока он дойдет до точки. И тупо меняет направление. Тоести по истечению 10 секунд поф дошел нет менят точку.
Спасибо большое за урок! Все работает как надо, но если врагов сделать больше 3х они начинают иногда тупить в одну точку и никак не разойдутся...
Спасибо. Дело в том, что в моих именно и не только в моих видео не есть решение для создания полноценной игры, а так сказать подсказка к дальнейшем вашим действием. То есть вы должны сами освоить программирование, но опираясь на какие то методы в моих видео. На платных курсах или уроках там уже серьезная разработка, а здесь чтобы хотя бы вы поняли что к чему.
Можно сделать как с харвесторами в стратегиях, когда они ждут своей очереди что бы войти в здание и отдать ресурсы
То есть, сделать так что если в точке уже находится патрульныц, то другой патрульный туда не шёл
Это можно сделать таким образом
Создать класс объекта и там вписать геймобджект патрульный
И метод которая говорит кто этот патрульный и который убирает его а в патрульном сделать проверку на состояние поля геймобджекта, если он null то можно смело идти, а если нет то ищем другой
Это проблема всех NavMeshAgent-ов, мы им даём один пункт и они всеми силами пытаются туда добраться, и друг с другом как будто в толчки играют
А у меня токого значения не что мне делать
у меня нету al
Все сделал и ни чего не происходит. Просто стоит в idle
а что если нет AI
Смотрите закрепленный комментарий.
помогите пж, у меня во вкладке Window нет AI
В новых версиях по моему устанавливать надо в package manager. Вот видео может поможет th-cam.com/video/u2EQtrdgfNs/w-d-xo.html
И на будущее, там постоянно что то будет в unity меняться, так что ищите или в гугле или на официанльном сайте какие обновления в каких версиях были. Вот результаты www.google.com/search?client=firefox-b-d&q=ai+navigation+in+unity
@@АйтиНубБлагодарю
У меня не получается найти Bake после установки этого, где он расположен
@@4ll4inS3r13s У меня старая версия движка. Вот здесь смотри th-cam.com/video/2f2azhep87I/w-d-xo.html
а какого года? я тоже такой установлю
@@АйтиНуб
у меня персонаж идёт прямо и всё
Если скрипт берете у меня смотрите чтобы переменные и объекты имели такие же названия как в скрипте или меняйте на свои, анимации стоят и переменные?.
Ктото знает а как сделать так чтобы враг рандомно выбирал точку?
Он так и делает
//создание случайно точки для движения
float randomZ = Random.Range(-walkPointRange, walkPointRange);
float randomX = Random.Range(-walkPointRange, walkPointRange);
wayPoint = new Vector3(transform.position.x + randomX, transform.position.y, transform.position.z + randomZ);
if(Physics.Raycast(wayPoint, -transform.up, 2f, whatIsGround ))
{
walkPointSet = true;
}
чета у меня 900 ошибок
Читай и исправляй, там наверное все 900 ошибок с одной связано.
помогите исправить ошибки пожалуйста
1) NullReferenceException: Object reference not set to an instance of an object
PatrolBehaviour.OnStateUpdate (UnityEngine.Animator animator, UnityEngine.AnimatorStateInfo stateInfo, System.Int32 layerIndex) (at Assets/scripts/PatrolBehaviour.cs:37)
2) "GetRemainingDistance" can only be called on an active agent that has been placed on a NavMesh.
UnityEngine.StackTraceUtility:ExtractStackTrace ()
PatrolBehaviour:OnStateUpdate (UnityEngine.Animator,UnityEngine.AnimatorStateInfo,int) (at Assets/scripts/PatrolBehaviour.cs:30)
обе ошибки появляються при анимации хождения при этом все анимации работают
проверил все теги и названия
может ли это быть из-за того что враг состоит из нескольких объектов?
что делать у меня нпс под землю падает по плечи?
Коллайдеры на нем проверь.