2D: первые объекты и запуск
Координаты, иерархия, видимость, камера и диагностика первого запуска.
Из чего состоит 2D-уровень
Entity2D хранит положение, поворот и масштаб. Сам по себе этот тип ничего не рисует и не создаёт столкновений.
| Задача | Подходящий тип |
|---|---|
| Показать изображение | Sprite2D с назначенной Texture |
| Управлять персонажем с физическими столкновениями | CharacterBody2D и дочерняя CollisionShape2D |
| Обнаружить вход в область | Area2D и дочерняя CollisionShape2D |
| Добавить интерфейс | Control; для отдельного слоя — CanvasLayer |
| Изменить вид на игровой мир | Camera2D |
Внешний вид персонажа и его физическая форма — разные объекты. Sprite2D не получает столкновения только потому, что на текстуре нарисована стена. Начните с первой 2D-игры, где настроены форма, слои, движение и обработка попадания.
Координаты и родитель
В 2D положительный X направлен вправо, положительный Y — вниз. Vector2.Up равен (0, -1). Position задаёт локальное положение, GlobalPosition — положение в пространстве соответствующего canvas.
Для дочернего Entity2D преобразование родительского CanvasItem влияет на итоговое положение: учитываются также поворот и масштаб. Обычная Entity между ними разрывает эту цепочку. У TopLevel собственные правила: он не наследует преобразование родительского CanvasItem. Подробности — 2D-преобразования.
Координата в единицах canvas не обязана совпадать с физическим пикселем экрана: масштаб Camera2D и настройки растяжения меняют результат. Не исправляйте ошибку камеры случайным изменением Position.
Работа в редакторе
Переключитесь в рабочую область 2D. Выберите объект в дереве, затем меняйте его Position, Rotation и Scale в инспекторе или инструментами перемещения, поворота и масштаба. Для поиска объекта используйте действие фокусировки выделения. Его клавишу проверяйте в настройках сочетаний редактора: назначение может быть изменено.
Область 2D — вид редактора, а не гарантированный кадр игры. Camera2D для простого вывода 2D не обязательна; при её использовании проверяйте итоговый вид запуском документа. Для HUD, который не должен двигаться вместе с миром, используйте слои canvas.
Для интерфейса выбирайте Control: его размеры, привязки и контейнеры решают задачу размещения элементов окна. Entity2D с ручными координатами не заменяет адаптивный интерфейс.
Проверить первый результат
- Назначьте текстуру Sprite2D и разместите его в видимой области.
- Запустите нужный документ: изображение должно быть видно в игре, а не только в редакторе.
- Переместите родителя и убедитесь, что дочерний объект ведёт себя ожидаемо.
- Если нужна физика, отдельно настройте форму, слои и маски; проверьте реальное столкновение.
| Проблема | Проверка |
|---|---|
| Ничего не видно | Texture, Visible у объекта и родителей, прозрачность Modulate, положение камеры |
| Объект закрыт другим | Порядок отрисовки, ZIndex и CanvasLayer |
| Проходит сквозь стену | Тип физического тела, CollisionShape2D, слои и маски |
| Интерфейс едет вместе с миром | CanvasLayer и иерархия HUD |
| Положение меняется неожиданно | Position против GlobalPosition, тип родителя, его поворот и масштаб |
Следующие задачи: движение, анимация спрайта, тайловый уровень.