background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "3D Pathfinding & Agent Avoidance In Unity"

input logo icon
Теги видео
|

Теги видео

unity
programming
algorithm
tutorial
projectile
coding
beginner
movement
bullet
physics
simulation
prediction
madewithunity
math
mathcoding
astar
A*
pathfinding
navmesh
nav mesh
agent
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
добро пожаловать в геймдев,
00:00:02
так что в прошлом пару раз
00:00:04
мне требовалась трехмерная
00:00:05
система поиска пути для летающих объектов и искусственного интеллекта,
00:00:08
а теперь конкретно игра, над которой я
00:00:10
сейчас работаю, но навигационная сетка Unity
00:00:12
не помогла в этом Итак, я решил
00:00:15
взять дело в свои руки, имейте
00:00:17
в виду, что в этом видео я сделаю только обзорное
00:00:19
объяснение кода, поскольку
00:00:21
пошаговое объяснение займет слишком много
00:00:22
времени, но я оставлю ссылку на
00:00:24
проект github, чтобы вы могли скачайте
00:00:26
и посмотрите, как я реализовал всю эту
00:00:28
систему, поскольку вы, возможно, слышали, что
00:00:30
алгоритм перехода к алгоритму поиска пути — это алгоритм со звездочкой.
00:00:33
Подробное объяснение можно найти
00:00:35
в Википедии, но я постараюсь
00:00:37
суммировать его как можно лучше. насколько я могу, сначала нам нужно
00:00:40
определить сетку точек, которая будет
00:00:42
представлять наш мир. Я сделал это,
00:00:44
нарисовав текстуру, где белые пиксели - это
00:00:46
три действительные точки, а черные
00:00:48
пиксели - недопустимые точки. Теперь мы
00:00:51
пишем код, который сэмплирует нашу текстуру
00:00:53
и создает экземпляры точек
00:00:56
для каждой точки, нам нужно хранить ее
00:00:57
соседей, если точка недействительна и
00:01:00
ее координаты, эти значения не
00:01:02
изменятся, они всегда остаются неизменными. Теперь
00:01:04
давайте определим данные точки класса для
00:01:06
значений, которые являются динамическими и меняются для
00:01:08
каждого пути. чем координаты, нам
00:01:10
нужны значения g-score f-score и
00:01:13
индексы, из которых я объясню
00:01:16
далее, g-score и f-score необходимы для
00:01:18
определения наилучшего пути. g-score — это
00:01:21
стоимость пути с самого начала. указывают на
00:01:23
некоторые конечные точки, в этом примере мы можем
00:01:25
увидеть, как мы вычисляем g-показатель для
00:01:27
каждой точки, которую мы добавляем на единицу, поскольку
00:01:30
расстояние от предыдущей точки составляет
00:01:32
ровно один метр, f-показатель
00:01:35
рассчитывается путем получения g-показателя
00:01:37
конечная точка и добавление расчетной
00:01:39
стоимости пути от конечной точки до
00:01:41
нашей целевой точки. В этом примере
00:01:44
показатель g равен 2, и скажем, расчетное
00:01:46
расстояние от конечной точки равно 8. мы получаем
00:01:50
значение 8, используя эвристику
00:01:52
функция в этом случае эвристическая функция
00:01:54
возвращает нам только расстояние от одной
00:01:56
точки до другой, если необходимо получить оценку g,
00:01:59
а эвристическая функция возвращает
00:02:01
нам 8, оценка f равна 2 плюс 8, равна 10.
00:02:05
поэтому оценка f этой точки равна до
00:02:07
10.
00:02:09
наконец, источник происхождения необходим для хранения того,
00:02:12
из какой точки мы достигли текущих
00:02:14
точек, которые всегда будут индексами
00:02:16
одной из соседних точек. Теперь,
00:02:18
когда мы определили наши данные, мы можем
00:02:20
продолжить и начать писать алгоритм звезды.
00:02:23
входные данные — это начальная точка и
00:02:25
конечная точка. Первое, что мы делаем, это создаем
00:02:27
наш набор данных из существующих точек
00:02:30
и устанавливаем начальное значение g и
00:02:32
f на бесконечность и получаем от
00:02:34
минус единицы,
00:02:36
и в качестве первой точки мы устанавливаем
00:02:38
g-оценка по начальной точке равна нулю,
00:02:41
затем мы добавляем нашу начальную точку в
00:02:43
переменную открытого набора, которая может быть более простым списком
00:02:45
или более оптимизированным вариантом кучи,
00:02:49
затем, пока открытый набор не пуст, мы
00:02:52
получаем точку с наименьшим показателем f
00:02:54
и проверяем, является ли это нашей целью, если нет, мы
00:02:57
ищем каждого соседа, и если он не является
00:02:58
недействительным, мы вычисляем и проверяем, является ли его
00:03:01
g-показатель из текущей точки ниже,
00:03:04
чем уже имеющийся у него g-показатель,
00:03:06
и если да, мы присваиваем значения
00:03:09
и добавьте его в наш открытый набор, хорошо, теперь
00:03:11
давайте посмотрим на звезду в действии.
00:03:13
желтые точки — это точки, через которые звезда
00:03:15
прошла, а синие
00:03:17
точки — это точки в открытом наборе, которые
00:03:19
звезда еще не получила. вы
00:03:21
также можете увидеть строку отладки, когда звезда a
00:03:24
вычисляет f-показатель и g-показатель
00:03:26
соседних точек
00:03:31
[Музыка]
00:03:34
теперь, когда у нас есть базовое понимание
00:03:36
того, как работает звезда, я решил добавить,
00:03:39
избегая других движущихся символов или
00:03:41
агенты, я испробовал много идей и алгоритмов,
00:03:44
чтобы заставить эту работу работать, почти все они потерпели неудачу,
00:03:45
но мы, наконец, нашли что-то, что
00:03:47
может сработать, поэтому идея заключается в том, что каждый агент имеет
00:03:50
свой приоритет, и ни один другой агент не может иметь
00:03:52
такой же приоритет, это можно определить
00:03:55
несколькими способами. но я выбрал тот,
00:03:57
кто самый медленный, имеет наибольший
00:03:59
приоритет. Каждая точка теперь имеет список
00:04:01
агентов, которые будут проходить через нее по
00:04:03
ее пути,
00:04:04
затем, когда агент находит свой путь, он
00:04:07
записывает в каждой точке своего пути, через которую
00:04:09
он пройдет. в какое время он
00:04:11
пройдет и когда он написал эту
00:04:13
информацию, теперь есть два условия:
00:04:16
первое: если точка, через которую агент хочет
00:04:18
пройти, уже назначена
00:04:19
агентом с более высоким приоритетом, агент сравнивает
00:04:22
свое время достижения точки с
00:04:24
агент с более высоким приоритетом, и если
00:04:26
разница достаточно мала, агент
00:04:28
должен избегать этой точки. Второе
00:04:30
условие меняется на противоположное. Если агент хочет
00:04:32
пройти точку, которая уже
00:04:34
назначена агентом с более низким приоритетом, и
00:04:36
разница во времени достижения
00:04:38
мала, он должен поручите этому агенту с более низким
00:04:40
приоритетом найти другой путь и
00:04:42
избежать этого, и эта система работала очень
00:04:45
хорошо, как вы можете видеть,
00:04:46
вероятно, есть лучшее решение,
00:04:48
чем это, но мне было очень весело
00:04:50
самому придумывать решение,
00:04:52
теперь это было довольно легко чтобы преобразовать это
00:04:54
в алгоритм поиска трехмерного пути,
00:04:56
просто добавив еще одно измерение в
00:04:58
сетку [Музыка]
00:05:03
для создания мира, я определил
00:05:05
границы мира и для каждой точки я
00:05:07
проверял, есть ли коллайдер,
00:05:08
перекрывающийся с полем,
00:05:10
если есть точка была объявлена
00:05:12
недействительной,
00:05:15
теперь я создал этот простой пример, чтобы
00:05:17
показать, как происходит создание мира, мы
00:05:19
можем изменить масштаб мира,
00:05:25
и именно так мир определяет
00:05:26
недействительные и действительные точки.
00:05:29
[Музыка]
00:05:39
[Музыка]
00:05:51
теперь мне действительно не понравилась крутые повороты, которые
00:05:53
делали агенты, я имею в виду, что, возможно,
00:05:55
наземные персонажи могут двигаться таким образом и с этим все
00:05:57
в порядке, но ни один летающий объект не
00:05:59
выглядит хорошо, летая таким образом, поэтому я попытался
00:06:01
преобразовать точки пути в кривую,
00:06:03
используя актив кривой Безье Себастьяна
00:06:05
из хранилища активов, и это работало
00:06:07
довольно хорошо, пока агенту не понадобилось
00:06:09
найти другой путь
00:06:11
[Музыка],
00:06:15
поэтому он снова начал думать, и то, что он
00:06:16
придумал, довольно просто: мы определяем
00:06:18
скорость движения агента и скорость поворота, затем
00:06:21
мы проходим путь по
00:06:23
скорости агента, выбирая путь точки по
00:06:25
пути агент постоянно движется в прямом
00:06:27
направлении, в то же
00:06:29
время поворачивая свое направление вперед в
00:06:31
направлении текущей точки траектории выборки,
00:06:33
это дает превосходное летающее
00:06:35
движение, но снижает вероятность
00:06:37
предотвращения столкновений, поскольку агент не
00:06:39
следует строго путь, но пытается
00:06:41
следовать только по нему, чем больше мы увеличиваем
00:06:43
скорость поворота, тем лучше следует путь,
00:06:46
но я утешал себя, говоря, что даже
00:06:48
человек-игрок время от времени натыкается на что-то
00:06:53
[Музыка],
00:06:57
так что у нас есть 3D-система поиска пути
00:06:59
с дополнительным агентом избегание,
00:07:02
спасибо за просмотр этого видео, не
00:07:04
думайте об этом как об уроке, это скорее
00:07:06
интересный способ использовать различные
00:07:08
алгоритмы в своем проекте.
00:07:10
Я оставлю ссылку на Patreon в
00:07:12
описании для всех, кто захочет
00:07:13
меня поддержать,
00:07:14
и как всегда не забудь поставить лайк и
00:07:16
подписаться, увидимся в следующий раз

Описание:

An custom pathfinding experiment tried. Support me on Patreon: https://www.patreon.com/abitofgamedev Follow me on Twitter: https://twitter.com/steffonne Follow me on Instagram: https://www.facebook.com/unsupportedbrowser Download the project: https://github.com/abitofgamedev/pathfinding

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "3D Pathfinding & Agent Avoidance In Unity"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "3D Pathfinding & Agent Avoidance In Unity" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "3D Pathfinding & Agent Avoidance In Unity"?mobile menu icon

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

mobile menu iconКак скачать видео "3D Pathfinding & Agent Avoidance In Unity" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "3D Pathfinding & Agent Avoidance In Unity"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "3D Pathfinding & Agent Avoidance In Unity"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.