Zielen auf bewegte Gegner
Aus DGL Wiki
Version vom 15. März 2008, 20:03 Uhr von The-Winner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: ==Zielen auf unbewegte Gegner== Hier ist der erwartete Kollisionspunkt die aktuelle Position des Gegners. In 3D benötigen wir um unseren Schuss in die Richtung des Geg...)
Zielen auf unbewegte Gegner
Hier ist der erwartete Kollisionspunkt die aktuelle Position des Gegners. In 3D benötigen wir um unseren Schuss in die Richtung des Gegners abzufeuern, einen Vektor in Richtung des Gegners mit Länge 1. Diesen können wir anschließend mit der Geschwindigkeit des Schusses und der Zeitdifferenz multiplizieren um den Schuss zu bewegen.
Richtung:=normalize(OrtDesGegners)
In 2D können wir auch mit diesem Vektor arbeiten. Oft will man jedoch auch den Winkel unter dem man den Schuss abfeuern muss. Also benötigen wir eine Funktion die aus der (x,y)-Position des Gegners, den Winkel zum Gegner errechnet. Dafür ist die Funktion arctan2 aus der unit math geeignet. Da diese den Fall y=0 jedoch nicht korrekt handhabt, habe ich eine eigene funktion dafür geschrieben.
function GetAngleTo(const x,y:real):real; begin ToDo: Add code here end;