So schwer ist es aber gar nicht.Uwe Poppel wrote: ↑Sat, 13. Feb 21, 05:49Die Diskussion finde ich durchaus interessant hier, auch prinzipiell das Video, das von K.O.S.H. gepostet wurde.
Aber wir haben hier im Spiel einen dreidimensionalen Raum (Weltraum eben) und dazu - nicht unerheblich! - zumeist sich beide bewegende Objekte (Geschütz und Ziel). Bewegungen im dreidimensioalen Raum werden - auch bei der Programmierung - oft unterschätzt.
Nur so als kleines Beispiel, Ausweichen bei Hindernissen: Im zweidimensionalen Raum gilt in der Regel rechtsrum oder linksrum. Im dreidimensionalen Raum gibt es prinzipiell mindestens 10.000 Möglichkeiten des Ausweichens. Welche soll man nun nutzen?
Habe das vor ~15 Jahren als Student schon problemlos hinbekommen.
Den Punkt, wo du hinzielen musst, bestimmst du durch Triangulation, heutzutage in Echt meist durch Laser oder ungenau über Funk/Radar. Im Spiel hast du den Punkt gegeben.
Dann hast du den Punkt in Echt sogar schon im lokalen Koordinatensystem (dem der Waffe), im Spiel musst du noch die entsprechende Matrix draufmultiplizieren.
Dann haste zwei Quaternionen (ist und soll) und kannst daraus die Differenz berechnen.
Jeden Frame addierst du die maximale (Rotations) Geschwindindigkeit als Winkel auf dein Differenzquaternion und du hast genau dieses Ergebnis.
Der Gegner bewegt sich zwar, aber dann bildest du (natürlich) das Differenzquaternion jeden Frame neu. je nachdem, was nun schneller ist (Waffenrotation oder Gegner), kommt die Waffe näher als Ziel, oder eben nicht.
@Tenjin: Ich hab das Mod gemacht, die entsprechenden Tools gibt es im Modding-Forum.
Nachdem ich wusste, welche Werte ich anpassen muss, war es ziemlich einfach
Ich kann den Mod gerne bei Nexusmods hochladen, dein Savegame ist dann aber "modified", wenn du das benutzt.