Интерполяция 2D и 3D физики
В целом, интерполяция 2D и 3D физики работает очень схожим образом. Однако есть несколько различий, которые будут описаны здесь.
Глобальная и локальная интерполяция
В 3D, интерполяция физики выполняется независимо от глобального преобразования каждого 3D-экземпляра.
В 2D, напротив, физическая интерполяция выполняется на основе локального преобразования каждого 2D-экземпляра.
Это имеет некоторые последствия:
В 3D интерполяцию легко включать и выключать на уровне каждого
Node (Узла)с помощью свойства physics_interpolation_mode в Инспекторе, которое можно задать какOn,OffилиInherited (Наследуется).
Однако это означает, что в 3D опорные точки, возникающие в
SceneTree(из-за отношений родитель-потомок), могут быть интерполированы лишь приблизительно на физическом такте. В большинстве случаев это не имеет значения, но в некоторых ситуациях интерполяция может выглядеть немного некорректной.В 2D, интерполированные локальные преобразования передаются дочерним элементам во время рендеринга. Это означает, что если у родительского элемента
physics_interpolation_modeустановлено значениеOn, а у дочернего элемента установлено значениеOff, дочерний элемент всё равно будет интерполироваться, даже если родительский элемент движется. Неинтерполируется только локальное преобразование дочернего элемента. Поэтому управление включением/выключением 2D-узлов требует немного больше продумывания и планирования.Положительным моментом является то, что поведение поворота в дереве сцены прекрасно сохраняется при интерполяции в 2D, что обеспечивает сверхплавное поведение.
Сброс интерполяции физики
Всякий раз, когда объекты перемещаются в совершенно новое положение и интерполяция нежелательна (чтобы избежать артефакта "полос"), пользователь должен вызвать reset_physics_interpolation().
Хорошая новость заключается в том, что в 2D это происходит автоматически при первом добавлении узлов в дерево. Это уменьшает количество шаблонных элементов и сокращает усилия, необходимые для запуска существующего проекта.
Примечание
Если вы перемещаете объекты после добавления в дерево сцены, вам все равно придется вызывать reset_physics_interpolation(), как и в случае с 3D.
2D-Частицы
В настоящее время для интерполяции физики в 2D поддерживается только CPUParticles2D. Рекомендуется использовать частоту физических тиков не менее 20–30 в секунду, чтобы частицы выглядели плавно.
Particles2D (частицы GPU) пока не интерполируются, поэтому на данный момент рекомендуется преобразовать их в CPUParticles2D (но сохраните резервную копию Particles2D на случай, если мы заставим их работать).
Другое
get_global_transform_interpolated()в настоящее время доступно только для 3D.MultiMeshesподдерживаются как в 2D, так и в 3D.