Ich habe eine Entity
Instanz, die bei jedem Spiel-Tick aktualisiert wird. Nehmen wir einfach an, dass sich die Entität ständig vorwärts bewegt. Ich möchte in der Lage sein, einer Funktion, die sie in diese Richtung bewegt, den Winkel der Entität zuzuweisen:
moveForward(90);
sollte sie nach rechts bewegen. Wenn ich meine Rotation als global deklariert habe int
, dann tun
moveForward(rotation);
rotation++;
würde es mit seiner Bewegung einen kleinen Kreis zeichnen lassen.
Wie kann ich das machen? Ich gehe davon aus, dass dies Vektormathematik beinhaltet; Ich kenne keine, daher wäre eine kurze Erklärung nett.
quelle
Die andere Antwort ist ab sofort falsch. Um sich basierend auf einer Drehung korrekt entlang einer Ebene zu bewegen, gehen Sie wie folgt vor:
Ich würde jedoch empfehlen, eine Variable für cos / sin zu erstellen, die Sie nur aktualisieren, wenn sich die Drehung ändert, damit Sie sie nicht viermal pro Tick berechnen.
Die Geschwindigkeitsgeschwindigkeit würde sich von einer Seite zur anderen bewegen, die Vorwärtsgeschwindigkeit, um sich entlang Ihrer Rotation vorwärts zu bewegen.
edit: tesselode macht dasselbe, außer dass er keine seitliche Bewegung hat.
quelle
Sie sagten, Update-Ticks, also gehe ich davon aus, dass Sie keine variable Bildrate haben. Wenn ja:
x + = Geschwindigkeit * math.cos (Winkel)
y + = Geschwindigkeit * math.sin (Winkel)
Wenn Sie eine variable Bildrate verwenden, müssen Sie auch mit der Deltazeit multiplizieren.
quelle