reckfellENGINE

Физика работает неверно: порядок диагностики

Проверки коллизий, сигналов, дрожания, туннелирования и времени физики без случайной правки настроек.

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

Сначала уменьшите воспроизведение

Оставьте один проблемный объект, один пол и действующий скрипт. Сравните с готовыми 2D и 3D уровнями. Запишите backend, частоту физики, размеры, скорость, массу, фильтры и порядок действий. Пауза/покадровый просмотр и видимые формы полезнее случайного увеличения всех параметров.

Нет столкновения или сигнала

СимптомПроверить в таком порядке
Проходит сквозь стену даже медленноТип тела; прямой родитель CollisionShape; Shape и размеры; Disabled; Layer/Mask; текущий мир
Меш виден, контакта нетВидимая модель не создаёт форму автоматически; скройте рисунок и проверьте геометрию
Area не сообщает входMonitoring, активная форма, Mask зоны против Layer цели, BodyEntered или AreaEntered, Monitorable другой зоны, физический шаг
RigidBody не сообщает контактContactMonitor и MaxContactsReported > 0; физический контакт, не только визуальное касание
Луч промахиваетсяМировые From/To против локального TargetPosition, Mask, CollideWithAreas, RID-исключения, начало внутри формы
После изменения всё ещё старый результатЗапрос читает прошлое физическое состояние; дождитесь шага, для RayCast при необходимости ForceRaycastUpdate
Изменилась геометрия всех экземпляровОбщий ресурс Shape; копия нужна до изменения размера
Ошибка при отключении зоны в сигналеСначала флаг обработки, затем SetDeferred/QueueFree; не изменяйте заблокированную структуру немедленно

Эти случаи проверены на опубликованных примерах. Другие сценарии ниже — направления диагностики; они не являются гарантией исправления любой сцены или результатами теста всех устройств.

Быстрый объект проходит стену

Сопоставьте перемещение за шаг speed / ticksPerSecond с толщиной стены и размером предмета. При дискретной проверке тело может оказаться по другую сторону. Сначала исключите прямую телепортацию Transform, неверные фильтры и тонкую/нулевую форму. Затем проверьте поддерживаемый режим CCD, более толстую геометрию, допустимую скорость или физическую частоту. CCD имеет цену и ограничения; не обещайте, что один флаг поймает любой снаряд. Для игровой пули часто нужен отдельный отрезок/shape-query от прежнего положения к новому и явная политика попадания.

Дрожат стопки, тонкие предметы или цилиндры

Уберите стартовое проникновение, крайне разные массы и масштабы, слишком тонкие формы, конкурирующий скрипт Position/Rotation и подвижного родителя динамического тела. Проверьте PhysicsMaterial, сон и параметры solver выбранного backend. Увеличение итераций/частоты требует замера CPU и не исправляет неподходящую геометрию. Для цилиндрического персонажа сравните капсулу; для предмета форму выбирайте по нужному поведению и реальному тесту, а не по внешнему сходству.

Масштаб, швы и транспорт

Задавайте размеры в Shape при единичном масштабе физической ветви. Проверьте все transform предков. У составных тайлов/треугольников тело может цепляться за внутренние границы; попробуйте непрерывную упрощённую геометрию, подходящее объединение и закруглённую форму персонажа. Массовая смена margin без анализа может добавить зазоры или проникновение.

VehicleBody — готовая модель с ограничениями, а не гарантия реалистичной устойчивой машины на любой скорости. Сначала проверьте центр масс, подвеску, радиусы, единицы, форму кузова и размер шага. Для нестандартной модели транспорта может понадобиться собственное управление силами. Этот набор тестов не проверяет VehicleBody, высокие стопки, тонкие цилиндры или CCD.

Проседает скорость симуляции

Отдельно измерьте время физики, скриптов и рендера. Нагрузка может резко расти при контакте больших групп объектов, сложных concave/convex-наборов или множественных сигналах. Проверьте число активных тел, контактов, перестроений геометрии и аллокаций в callback. Тело без полезного игрового действия можно усыплять/деактивировать по явной политике, но не ломая коллизии игрока.

Если кадр не успевает выполнить нужные физические шаги, лимит physics/common/max_physics_steps_per_frame может ограничить догоняющую обработку. Повышение лимита не делает шаг дешевле. Сначала снизьте стоимость и измерьте худший случай; изменение time scale, FPS или интерполяции может скрыть симптом, но не устранить нагрузку. Не требуйте побитового совпадения сложной симуляции между платформами без отдельной стратегии детерминизма.

Далеко от начала мира

Большие координаты уменьшают доступную точность transform, контактов и рендера. Для начала переместите минимальное воспроизведение ближе к нулю. Деление мира на области, перенос начала координат и сборка с другой точностью требуют согласования всех систем и отдельной проверки. Сцена с одним ящиком не подтверждает работу большого мира. Подробности: большие координаты.

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

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

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

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