Префаб 2D-персонажа
Создайте CharacterBody2D с формой 28 × 28 и настройте слой, маску и режим движения.
Создайте иерархию
Через File → Create Prefab… создайте документ с корнем CharacterBody2D, назовите его Player и сохраните как Prefabs/Player.rprefab. Добавьте дочернюю CollisionShape2D:
Player (CharacterBody2D)
└── CollisionShape2DВ CollisionShape2D.Shape создайте RectangleShape2D с размером (28, 28). Локальная позиция формы — (0, 0), Disabled выключен. Сама форма невидима при обычном запуске: это данные физики.
Свойства корня
| Свойство Player | Значение | Причина |
|---|---|---|
Position | (320, 180) | Виден при отдельном запуске префаба |
Motion Mode | Floating | Движение сверху вниз без пола и гравитации |
Collision Layer | Только слой 1 | Противник сможет обнаружить игрока |
Collision Mask | Все выключены | В этом прототипе нет твёрдых препятствий |
Числовые значения слоя и маски — 1 и 0; в инспекторе это кнопки битов. Не путайте слой, на котором существует тело, с маской того, что оно ищет.
Для совпадения с рисунком скрипта оставьте масштаб дочерней формы (1, 1) и меняйте размер через RectangleShape2D.Size. Перемещение формы относительно корня смещает коллизию, но не квадрат из _Draw().
Видимое изображение
В DodgePlayer.cs метод _Draw() нарисует синий квадрат с теми же границами 28 × 28. Sprite2D, текстура и архив графики здесь не нужны. Пока скрипт не прикреплён и не собран, одна форма не покажет персонажа в игре.
После добавления кода соберите проект и запустите префаб с F6. Квадрат должен быть в центре окна и двигаться. В общем уровне экземпляр Player будет находиться в (320, 300) — это локальное переопределение позиции, а не изменение исходного типа.
Если игрок не обнаруживается противником, проверьте форму, слой 1 у игрока и маску 1 у Area2D противника. Маску самого игрока включать для этого не требуется. Физика и столкновения.