reckfellENGINE

Физика: выбрать тело, форму и запрос

С чего начать коллизии 2D/3D: назначение тел, слои, физический шаг и рабочие примеры.

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

Выберите задачу

НужноИспользуйте
Неподвижная стена или полStaticBody2D/3D и дочерняя форма коллизии
Персонаж под управлением кодаCharacterBody2D/3D; движение через методы тела в _PhysicsProcess
Ящик, который падает и реагирует на ударRigidBody2D/3D; силы, импульсы и физический интегратор
Движущаяся платформаAnimatableBody2D/3D с согласованным физическим движением
Зона урона, подбора или гравитацииArea2D/3D; обнаружение пересечения отдельно от блокирования
Проверка видимости, прицел или выбор мышьюRayCast2D/3D либо запрос DirectSpaceState

Entity2D/3D, Sprite и MeshInstance сами по себе не становятся физическими телами. CollisionShape тоже не заменяет тело: это дочерняя сущность с ресурсом Shape. Видимая модель и геометрия столкновений настраиваются отдельно.

Начать с работающего уровня

Откройте пример коллизий 2D: он сам создаёт пол, стену, падающее тело, зону и луч. Для пространственной сцены используйте пример 3D. Там же приведены все необходимые C#-файлы, тип корня и ожидаемый результат. В примерах нет внешних изображений и моделей.

Персонажа удобнее изучать на полной игре 2D или полной игре 3D: там есть ввод, движение, столкновения и перезапуск. Для существующего проекта сначала проверьте частоту физики, гравитацию и используемый backend.

Что проверять у каждой пары объектов

У тела/зоны должны быть включённые дочерние формы с ненулевыми размерами и правильным положением. Layer задаёт принадлежность, Mask — фильтр того, что объект обнаруживает или с чем взаимодействует. Номер слоя 3 — бит 1 << 2, то есть значение 4, а не маска 3. Для редакторских слоёв 1–32 используйте SetCollisionLayerValue/SetCollisionMaskValue; не сдвигайте номер повторно.

У зоны обнаружение направленное: её Mask проверяется против Layer цели. У луча есть собственные Mask и выбор тел/зон. Для физических тел учитываются фильтры обоих участников по правилам backend; не требуйте автоматически две одинаковые маски. В примерах пол имеет Layer 1, Mask 0, а ящик Layer 4, Mask 1 — контакт есть. Подробности и диагностика: зоны, лучи.

Физическое время и единицы

_PhysicsProcess получает фиксированный шаг, _Process зависит от отрисовки. Частота задаётся physics/common/physics_ticks_per_second; примеры проверены при 60 шагах/с, гравитации 980 вниз в 2D и 9.8 вниз в 3D. Это настройки примера, а не обязательные значения для любой игры. В 2D обычно считают в пикселях, в 3D — в метрах; сам Vector не проверяет выбранную вами систему единиц. Положительный Y 2D направлен вниз, положительный Y 3D — вверх.

Скорость задавайте в единицах за секунду. Способ применения delta зависит от метода: CharacterBody.Velocity и ApplyCentralForce не нужно заранее превращать в перемещение за кадр. Импульс задаётся один раз на событие. Управление твёрдым телом разбирает эти различия.

Физические события и результаты не обновляются синхронно с каждой строкой кода. После добавления/перемещения формы дождитесь нужного физического шага. Отложенное изменение, физическая интерполяция и сетевая синхронизация решают разные задачи; интерполяция не добавляет точности контактам. Если поведение неверно, начните с проверок причин, а не с увеличения всех числовых настроек.

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

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

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

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