Система Передвижения - Документация

Обзор

Система передвижения в PolyQuest предоставляет полноценный 3D CharacterController с физикой, камерой, системой прыжков и бега.

Компоненты Системы

CharacterBody3D

Основной контроллер персонажа с физикой столкновений:

  • Скорость ходьбы: 5.0 единиц/секунду

  • Скорость бега: 10.0 единиц/секунду

  • Прыжок: 6.0 единиц/секунду

  • Гравитация: 9.8 единиц/секунду²

  • Форма коллизии: CapsuleShape3D (радиус 0.4, высота 1.6)

Camera3D

Камера от первого лица:

  • Позиция: 1.6 единиц над центром персонажа

  • Вращение: Следует за мышью

  • Чувствительность: 0.15

  • Ограничения: -80° до 80° по вертикали

Управление

Движение

  • W/S/A/D: Движение вперед/назад/влево/вправо

  • Shift: Бег (удвоенная скорость)

  • E: Прыжок

Камера

  • Мышь: Осмотр вокруг

  • ESC: Переключение захвата

Настройки Движения

Переменные

var walk_speed: float = 5.0      # Скорость ходьбы
var run_speed: float = 10.0      # Скорость бега
var jump_velocity: float = 8.0   # Сила прыжка
var gravity: float = 9.8         # Сила гравитации

Кнопки Управления

var move_forward: String = "up"      # Движение вперед
var move_backward: String = "down"   # Движение назад
var move_left: String = "left"       # Движение влево
var move_right: String = "right"     # Движение вправо
var jump_action: String = "ui_accept" # Прыжок (E)
var run_action: String = "shift"     # Бег (Shift)

Физические Характеристики

Формулы Движения

  • Гравитация: V = V0 - g*t (равноускоренное движение)

  • Бег: При нажатии Shift скорость удваивается

  • Прыжок: Возможен только при контакте с землей (is_on_floor())

Коллизия

  • Форма: CapsuleShape3D

  • Радиус: 0.4 единицы

  • Высота: 1.6 единицы

  • Центр: 0.8 единицы

Особенности

Прыжки

  • Прыжок возможен только при контакте с землей

  • Высота прыжка зависит от силы прыжка и массы персонажа

  • Автоматическое приземление при столкновении с объектами

Бег

  • При нажатии Shift персонаж бежит с удвоенной скоростью

  • Бег не влияет на прыжки и гравитацию

  • Энергозатраты не учитываются (можно бегать бесконечно)

Камера

  • Плавное вращение за мышью

  • Ограничение угла наклона для предотвращения переворота

  • Автоматическое обновление направления движения

Интеграция с Системой Предметов

  • При нахождении в радиусе действия предмета появляется подсказка

  • Клавиша E используется для подбора предметов

  • Инвентарь отображается в правом верхнем углу

Настройка

Скорость Движения

Измените переменные walk_speed и run_speed в CharacterBody3D.gd для изменения скорости персонажа.

Высота Прыжка

Отрегулируйте jump_velocity для изменения высоты прыжка.

Сила Гравитации

Измените gravity для настройки скорости падения.

Масса Персонажа

Измените mass для настройки влияния гравитации на персонажа.

Чувствительность Мыши

Измените значение в event.relative.x * 0.15 для настройки чувствительности камеры.

Решение Проблем

Персонаж Застревает

  • Проверьте коллизию с окружающими объектами

  • Убедитесь, что CapsuleShape3D правильно настроен

Камера Не Работает

  • Проверьте настройки ввода в project.godot

  • Убедитесь, что Camera3D правильно привязана к персонажу

Прыжки Не Работают

  • Проверьте значение is_on_floor()

  • Убедитесь, что jump_velocity положительное

Бег Не Работает

  • Проверьте, что клавиша Shift правильно настроена в InputMap

  • Убедитесь, что переменная run_speed больше walk_speed

Будущие Улучшения

Возможные Добавления

  • Система энергии для бега

  • Разные типы поверхностей (лед, грязь)

  • Система усталости

  • Плавание и подводное движение

  • Система настроек управления (переназначение клавиш)