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...)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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;