Wie mache ich das ein Objekt in Java einem Vektor folgt?

...komplette Frage anzeigen

2 Antworten

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.

Programmierst du das Spiel oder nur einen Bot/Ki gerade. Ich nehme an das ist "tick basiert"? Dann musst du zB alle Schüsse in ner Liste speichern und bei jedem tick bewegen.

Niclasa2003 27.06.2017, 23:35

ich schreibe grad das spiel (das sagte ich aber auch)und nur ums gesagt zu haben das wär irgendwie ne schlechte art ne KI zu programmieren weil so wie ich das grad verstanden würdest du einfach dem Panzer ne Liste von Befehlen geben die er dann halt abarbeitet doch ich glaube das wär nicht mal ne KI da er ja nicht auf Einflüsse reagiert

0
triopasi 27.06.2017, 23:41
@Niclasa2003

Das wäre sehr schlecht, das muss natürlich in die tick-Methode vom Spiel, war auch si gemeint.

Frage ist dann wie ein Panzer einen Schuss abgeben kann zB? Bekommt einfach jede KI in jedem Tick ne Chance etwas zu machen oder wie ist das gedacht?

0
Niclasa2003 28.06.2017, 00:21
@triopasi

Ich habs mir So vorgestellt in der main wird alle 3 millis oder so die KI Methode von jedem Panzer aufgerufen wiird und die KI besteht dann halt aus ganz vielen If else if und else abfragen besteht ich möchte gerne die Methoden move(),und shoot() zur verfügung stellen und eben durch libGDX und die Vektor2 Klasse gibt's zum ausrichten der Panzers viele Möglichkeiten (btw weißt du wie man es macht das sich der Panzer langsam dreht und nicht instant ohne die ganzen setangle() zu überschreiben doch ich glaub das geht nicht ohne aber ich lerne erst seid 2 Monaten aber bin halt in der beste Informatik AG und deswegen hat der Lehrer gesagt ich soll das spiel über die Sommerferien schreiben (um ehrlich zu sein ich will auch gar nicht sehen was die meisten GENIUSES aus der AG hingerotzt hätten weil sie nur in der AG sind weil sie sich denken das sie dann das nächste Minecraft,Super Meatboy, oder Undertale zu machen(halt much MONEY))) die Schussrichtung zu setzten und der schuss wird halt auf den Cords des Panzers erstellt und sich  auf nem konstanten Speed in Schussrichtung bewegt also eigentlich brauch ich nur die Delta x und Delta y Daten (bei nach rechts wäre Delta x = schussspeed und Delta y = 0)

0

Was möchtest Du wissen?