Hallo, ich dachte mir ich melde mich mal an um eine brennende Frage loszuwerden. Vielleicht hat hier ja jemand Spaß an sowas:
Wir arbeiten grad mit ein paar Freunden an einem Hobby Computerspiel Projekt mit der Unreal Engine. Erstmal nichts weltbewegendes, in dem Spiel fliegt man ein Raumschiff und schießt auf andere Raumschiffe.
Jetzt habe ich mir in den Kopf gesetzt für nicht-zielsuchende Geschosse ein Vorhalte-Fadenkreuz anzubieten.
Dieses Fadenkreuz soll dort auf der derzeitigen Flugbahn des "KI"-gesteuerten Raumschiffes angezeigt werden wo man hinzielen muss damit sich Geschoss und Gegner-Raumschiff treffen. Das eigene Geschoss hat eine feste Geschwindigkeit.
Zunächst dachte ich alles wär so einfach:
(Entfernung zum Ziel / Geschwindigkeit Geschoss) mal (Geschwindigkeit Ki-Schiff) = Entfernung Zielpunkt zu Ki-schiff entlang der Flugrichtung des Ki-Schiffes
Also angenommen: - Spieler-Geschoss fliegt - Ki-Schiff in meter Entfernung - Ki-Schiff fliegt
Bei diesem einfachen Beispiel müsste der Spieler also meter vor das gegnerische Raumschiff zielen um zu treffen. So hab ich das dann mal in Unreal gescriptet und auf kurze Entfernung haut es auch gut hin, auf längere aber nur wenn die Entfernung von Spieler und Gegner weitestgehend gleich bleibt während das Geschoss fliegt. Da wurde mir klar, die Rechnung geht eigentlich nur auf wenn der Gegner einen perfekten Kreis um den Spieler fliegt, wie in Beispiel A.
Aber was ist wenn das Ki-Schiff schräg vom Spieler wegfliegt so wie in Beispiel ?
Angenommen in Bild ist das Ki-Schiff gerade entfernt, es bewegt sich immernoch mit . Wenn ich jetzt meter entlang des Ki Flugvektors vorhalte und schieße wird das Ki-Schiff je nach Winkel bis zu meter weiter entfernt sein als zum Zeitpunkt der Berechnung, also wär das Geschoss bis zu Sekunden zu spät am Zielpunkt.. so wird das also nichts.
Dann dachte ich, ich nehm die Zeit die das Geschoss zum Vorhaltepunkt braucht, also mal angenommen . meter, jetzt guck ich wie lange das Ki-Schiff in der Zeit in der das Geschoss meter fliegt zurücklegt, dadurch ist der Vorhaltepunkt aber wieder weiter vorne, jetzt berechne für den die Geschossgeschwindkeit.. und merke die Katze beißt sich selbst in den Schwanz.
Es gibt definitiv den einen Punkt auf dem Flugvektor auf den man Zielen muss damit sich Geschoss und Ki-Raumschiff treffen, aber gehe ich recht in der Annahme, dass dies eine Gleichung mit zwei unbekannten ist? "Die Entfernung dahin wo das Ki-Raumschiff sein wird"
Ich sehe mich derzeit vollkommen chancenlos dies zu lösen, deswegen hab ich erstmal "Bitte nur um Ergebnis" angekreuzt. Wäre aber sehr dankbar für ein paar Stichwörter, falls es eine gängige Methode zur Lösung derartiger Probleme gibt, und wie diese Methode heisst damit ich mich ggf. selber nochmal einlesen kann.
Nachtrag: den Vector3 ,also die Richtung, in die sich das Ki-Schiff vom Spieler wegbewegt kenne ich auch
Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich benötige bitte nur das Ergebnis und keinen längeren Lösungsweg." |
vielen Dank! Ja, die Größen wären alle bekannt. Der obere Teil der Gleichung erscheint mir einleuchtend, nur das hier verstehe ich nicht auf Anhieb: dabei frage mich wieso 1, und müssten da nicht auch und drin vorkommen? Kriege ich aber vielleicht auch alleine raus, werd mich am Wochenende mal hinsetzen.
|