Im Libgdx-Lifecycle gibt es eine Methode "render". Diese wird in jedem Render-Durchlauf aufgerufen und dient zum aktualisieren und zeichnen der Objekte im Spiel.
In dieser Methode musst du deine Objekte, abhängig von der vergangenen Zeit seit dem letzten Bild (Gdx.graphics.getDeltaTime()
) und ihrere Geschwindigkeit, verschieben.
Dein Vector2 könnte dabei ein sogenannter normalisierter Vektor sein. Dabei handelt es sich um einen Vektor mit Länge 1. Also Wurzel(x² + y²) muss 1 sein. Dadurch dient der Vektor lediglich zur Anzeige einer Richtung und besitzt keine Stärke/Geschwindigkeit.
Im Update kannst du dann jede Koordinate des Vektors mit der Geschwindigkeit multiplizieren und hast die Geschwindigkeit/Koordinate.
Das Ganze noch mit "Delta" multiplizieren und du hast die Distanz, welche in diesem Frame zurückgelegt wurde.
Beispiel:
Dein Geschoss bewegt sich in einem Winkel von 45°. Dein Vektor ist also V(0,71|0,71) und hat somit Länge = 1 (Wurzel(0,71²+0,71²) = 1).
Wenn sich dein Geschoss nun mit 10 Einheiten/Sekunde bewegt ist die Geschwindigkeit in jede Richtung 7,1 Einheiten/Sekunde.
Wenn dein Spiel mit 60 FPS läuft dauert ein Bild 1/60 Sekunden, demnach bewegen sich deine Objekte mit 0,12 Einheiten/Sekunde auf jeder Achse.
Demnach ist die neue Position deines Objektes folgende:
x = x + 0,12
y = < +0,12
Das Objekt muss nun nur mehr an der entsprechenden Position gezeichnet werden und schon "folgt" es dem Richtungs-Vektor.