# Система Передвижения - Документация ## Обзор Система передвижения в 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**: Переключение захвата ## Настройки Движения ### Переменные ```gdscript var walk_speed: float = 5.0 # Скорость ходьбы var run_speed: float = 10.0 # Скорость бега var jump_velocity: float = 8.0 # Сила прыжка var gravity: float = 9.8 # Сила гравитации ``` ### Кнопки Управления ```gdscript 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` ## Будущие Улучшения ### Возможные Добавления - Система энергии для бега - Разные типы поверхностей (лед, грязь) - Система усталости - Плавание и подводное движение - Система настроек управления (переназначение клавиш)