reckfellENGINE

Интерполяция в проекте: движение, иерархия и телепорт

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

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

Подключать по одной ветви

Сначала убедитесь, что физическое движение корректно без сглаживания. Включите глобальную настройку, оставьте нормальную частоту физики и проверьте одну ветвь. Inherit получает режим родителя; On и Off задают локальное решение. Глобальное выключение делает систему неактивной даже при локальном On.

Перенесите физическое движение и изменения его родителей в _PhysicsProcess. Учитывайте косвенные записи: AnimationPlayer/AnimationMixer, Tween, дорожки transform, скрипты камеры и обычного родителя могут двигать объект, даже если его собственный скрипт ничего не меняет. Для физической анимации/Tween выберите подходящий физический режим обработки. Это не требование переносить сетевые запросы, интерфейс и весь код игры в физический callback.

Перенос и создание экземпляра

Правильный порядок телепорта: установить окончательное положение/ориентацию, затем ResetPhysicsInterpolation. Вызов до изменения transform сбросит историю на старом месте. После добавления экземпляра в дерево задайте его финальный transform и сбросьте историю нужной ветви. Вне активного дерева/при выключенной системе сброс не является отложенным обещанием будущей интерполяции.

Для CharacterBody сбрасывайте также нужные скорости и обновляйте состояние контактов новым движением. Для RigidBody используйте _IntegrateForces, как в примере сброса. Вызов ResetPhysicsInterpolation не обнуляет Velocity, таймеры или сетевые буферы. Сам Reset распространяет уведомление по дочерней ветви; у отдельно управляемых ресурсов есть собственные правила.

Рабочий перенос показан в InterpolationDemo2D, InterpolationDemo3D и обоих контроллерах персонажа. В запросе RequestWarp координата применяется в физическом callback, а не немедленно в обработчике ввода.

Частота и диагностика

Временно уменьшите частоту до 10–15 шагов/с, чтобы увидеть ступени и длинный след при ошибочном телепорте. Затем верните рабочую частоту и целевые FPS. Слишком низкая физическая частота меняет качество контактов; сглаживание не восстанавливает потерянные проверки. При проблеме записывайте физическую позицию и экранный результат отдельно, а не ожидайте, что GlobalPosition будет изменяться на каждом кадре.

СимптомПроверить
Рывки осталисьFPS относительно ticks, глобальная настройка, режим ветви, записи transform вне физического шага
Видимый пролёт после переносаПорядок transform → ResetPhysicsInterpolation, правильная ветвь и завершённое добавление в дерево
Камера дёргается при гладком объектеЧитает ли она физический или интерполированный transform; не сглаживается ли сама повторно
Off-ребёнок всё ещё двигается плавно с родителемOff не отменяет унаследованное движение родителя; проверьте иерархию/разделение ветвей
Картинка гладкая, столкновения неверныОтдельно исправляйте частоту, фильтры, формы и алгоритм движения

Включённые debug/settings/physics_interpolation/enable_warnings помогают искать неправильную фазу движения, но отсутствие предупреждения не доказывает корректность всей игры. Проверяйте также паузу, смену уровня, повторное создание, смену родителя и поведение при нескольких физических шагах за кадр.

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

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

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

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