2D і 3D фізична інтерполяція
Загалом 2D- і 3D-інтерполяція фізики працює дуже схожим чином. Однак є кілька відмінностей, які будуть описані тут.
Глобальна проти локальної інтерполяції
У 3D фізична інтерполяція виконується незалежно від глобального перетворення кожного 3D-примірника.
У 2D, навпаки, фізична інтерполяція виконується на локальному перетворенні кожного 2D-примірника.
Це має деякі наслідки:
У 3D інтерполяцію легко вмикати та вимикати на рівні кожного
Вузлаза допомогою властивості 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 частинки
Наразі лише CPUParticles2D підтримуються для фізичної інтерполяції у 2D. Рекомендується використовувати фізичну швидкість принаймні 20-30 тактів на секунду, щоб частинки виглядали рідкими.
Particles2D (частинки графічного процесора) ще не інтерполюються, тому наразі рекомендується конвертувати в CPUParticles2D (але збережіть резервну копію ваших Particles2D на випадок, якщо вони запрацюють).
інше
get_global_transform_interpolated()наразі доступний лише для 3D.MultiMeshesпідтримуються як у 2D, так і в 3D.