Wenn ich in meinem Spiel irgendwo mit der Maus auf das Gelände klicke, möchte ich, dass der Spieler parabolisch einen Pfeil auf diese Position abfeuert.
Der Pfeil hat eine Position, Beschleunigung und Geschwindigkeit, die alle 3D-Vektoren verwenden. Ich habe mir die Flugbahn eines Projektilartikels auf Wikipedia angesehen, weiß aber nicht, wie ich sie in meiner Situation anwenden soll, da sie die 2D-Mathematik erklärt. Ich habe mich gefragt, ob es eine Lösung für 3D-Vektoren gibt. Irgendwelche guten Ressourcen, die vielleicht mit der 3D-Situation zusammenhängen?
Antworten:
Um Kylotans Kommentar zu erweitern, können Sie die 2D-Formeln in 3D verwenden. Angenommen, Y ist aktiv:
Berechnen Sie die Position des Ziels im X'Y'Z'-Raum, wobei die X'-Achse parallel zur Pfeilflugrichtung ist, die Y'-Achse nach oben zeigt und Z 'senkrecht zur X'- und Y'-Achse ist.
Sobald Sie X 'und Y' berechnet haben, können Sie zurück in den realen XYZ-Raum konvertieren
Beispiel
Ein Bogenschütze ist bei (1,0,1). Er will einen Pfeil auf (4,0,5) schießen. Wir nehmen X 'als Einheitsvektor (0,6, 0, 0,8), da es direkt von der Quelle zum Zielpunkt zeigt. Wir nehmen dann Z 'als (-0,8, 0, 0,6), weil es eine Senkrechte ist, aber da sich der Pfeil nicht in der Z'-Achse bewegt, werden wir ihn ignorieren. Ihr Problem besteht nun darin, herauszufinden, wie Sie einen Pfeil von (0,0) nach (0,5) im X'Y'-Raum abschießen.
.. hier 2D-Berechnungen durchführen. Beachten Sie, dass Sie wahrscheinlich parametrische Funktionen von X 'und Y' in Bezug auf t , die Zeitvariable, wünschen .
Eine Möglichkeit, die Konvertierung zwischen den beiden Koordinaten zu abstrahieren, besteht in der Verwendung einer Transformationsmatrix.
Wenn wir von X'Y'Z ' nach XYZ zurückkonvertieren , ist dies einfach eine umgekehrte lineare Transformation.
quelle