reckfellENGINE

Навигация 2D: выбрать систему и запустить движение

От модели маршрута до физического движения и проверки цели.

На этой странице

Начните с выбора модели маршрута. Навигация ищет путь; игровой код двигает персонажа, а физика проверяет столкновения. Наличие одной системы не создаёт две остальные.

Какой API выбрать

ЗадачаКласс / API
Заранее заданные точки и связи между нимиAStar2D.
Перемещение по клеткам прямоугольной сеткиAStarGrid2D.
Движение внутри произвольной проходимой поверхностиNavigationServer2D с картой и полигонами.
Готовая обвязка поиска и следования для родителяДочерний NavigationAgent2D; физическое движение всё равно задаёте вы.

Не выбирайте меш только потому, что он кажется «мощнее» сетки. Для пошагового поля клеточная модель может точнее выражать правила. Для свободного движения по поверхности не требуется вручную создавать точку графа в каждой возможной позиции.

Рабочий порядок для движения по поверхности

  1. Подготовьте NavigationPolygon с реальными полигонами и назначьте его NavigationRegion2D. Для программного примера используйте запекание квадрата.
  2. Убедитесь, что регион и персонаж используют одну карту. Для отдельной карты назначьте её агенту явно; карты и владение.
  3. Создайте CharacterBody2D и CollisionShape2D. Коллайдер нужен для физики, ресурс навигации — для поиска пути.
  4. Добавьте дочерний NavigationAgent2D. Для готового выполненного скрипта, точного имени дочерней Entity и формы используйте пример движения агента.
  5. После публикации навигации вызовите SetDestination из этого примера с глобальной целью.
  6. Проверьте перемещение, достижение цели и остановку. Затем поставьте цель вне поверхности и отдельно обработайте частичный маршрут.

В проверенной карте x=0–20, y=0–10 физическое тело прошло от (2, 5) до (18, 5). Цель (30, 5) оказалась недостижимой, хотя агент закончил доступный маршрут. Это разные исходы, а не одна проверка IsNavigationFinished().

Какие объекты действительно нужны

NavigationPolygon хранит данные поверхности. NavigationRegion2D размещает их на карте. Карта объединяет регионы для запроса. NavigationAgent2D помогает выбрать очередную точку и при необходимости рассчитать избегание. CharacterBody2D выполняет физическое движение своим кодом.

NavigationLink2D обозначает специальный переход, но не исполняет прыжок или телепорт. NavigationObstacle2D участвует в избегании и/или разборе запекания; добавление препятствия не обновляет готовый путь автоматически. Не добавляйте эти Entity, пока задача их не требует.

Если персонаж не идёт

  • Нет пути: проверьте полигоны, карту, слои и готовность навигации.
  • Путь есть, тело стоит: нужен код движения родителя; сам агент его не двигает.
  • Тело упёрлось в стену: согласуйте навигацию и коллизию. Проверенный физический коллайдер остановил тело даже при прямом маршруте через стену.
  • Слишком медленно: для MoveAndSlide() скорость задаётся в единицах в секунду, без второго умножения на delta.

Маршрут следующего шага: агенты, регионы, затем доступ к участкам.

Выполнены сценарии физического движения, остановки, частичного пути и стены из связанного примера 2D. Выбор классов AStar сверен с SDK и исходниками; их алгоритмы, редакторская сборка уровня и графический результат этой проверкой не оценивались.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.