Ich versuche, ein Objekt so zu bewegen, dass es sich visuell mit der gleichen Geschwindigkeit bewegt, unabhängig von Schwankungen der Bildrate. Aus meiner Sicht sollte ich Time.deltaTime
verwenden, um zu bestimmen, wie weit man sich bei jeder Iteration von Update
bewegen muss. Mein Update
Code ist wie folgt:Verwirrt, warum Time.deltaTime ungleichmäßige Bewegung verursacht
void Update()
{
this.rigidBody.MovePosition(this.transform.position + new Vector3(Time.deltaTime * 2f, 0, 0));
}
Allerdings bewegt sich das Objekt in schneller und langsamer Schübe, wie es über den Bildschirm bewegt. Wenn ich es während jeder Update
(wie unten) eine konstante Menge verschiebe, scheint es sich gleichmäßig zu bewegen.
void Update()
{
this.rigidBody.MovePosition(this.transform.position + new Vector3(0.02f, 0, 0));
}
Ich bin verwirrt, weil ich dachte, dass bei jedem Update
ein Objekt einen konstanten Abstand bewegen sollte die Sache, die Jitter verursacht, da seine Geschwindigkeit durch die Framerate beeinflusst werden würde. Und ich dachte, dass die Verwendung von Time.deltaTime
eine konstante Rate der frameratenunabhängigen Bewegung verursachen sollte.
Meine Time.deltaTime
Werte variieren zwischen 0,002 bis 0,17, was ich auch nicht verstehe, weil ich eine sehr einfache Szene von nur 2D-Sprites habe, also verstehe ich nicht, warum die Varianz so groß ist.
Danke. Ich habe nicht bemerkt, dass MovePosition eine eigene Interpolation durchführt. Ich dachte, es hätte das Objekt sofort in eine Position gebracht. –