Ich glaub es ist 100% möglich ohne Fehler mit der Hälfte der Positionsabfragen. Gewagte These...
Erstmal grundlegende Fragen, von denen ich ausgehe:
- Kann sich ein Schuss nur waagerecht bewegen?
- Hat das eigene Raumschiffe Move-Picture-Strecken (Startkoordinate-Endkoordinate) ohne zwischenzeitliche Koordinaten (schnellere Bewegung --> längere Strecken)?
- Kann sich ein Raumschiff nur auf Move-Picture-Strecken bewegen?
Wenn wir davon ausgehen, würde ich Folgendes vorschlagen:
Der erste Teil des Bildes zeigt das Projektil von links kommend, dass mit dem in einer Kurve nach oben fliegenden Gegner kollidiert. Hierbei ist aber die Geschwindigkeit so groß, dass sie sich bei der Berechnung nicht berühren würden. Daher muss man gucken, wo der Gegner war (y-Achse) als er die x-Achse des Schusses durchquerte. Die Berechnung dazu steht im zweiten Teil des Bildes.
Wenn der y-Abstand zwischen Gegner und Schuss größer als die y-Geschwindigkeit des Gegners ist, können sie sich nicht gekreuzt haben (größer im Sinne von weiter von Null entfernt und beide positiv oder beide negativ).
Hat man einen möglichen x-Wert des Gegners gefunden, muss man gucken ob dieser zwischen den beiden Schuss-x-Werten liegt (letzte und vorletzte Position). Damit steht dann fest, ob er die Bahn gekreuzt hat oder nicht.
Man muss noch beachten, dass bei [y-Speed = 0] nicht gerechnet werden kann (siehe Abbildung). Hier muss man nur den x-Wert überprüfen.
Da der Gegner kein Punkt ist, muss es für die maximal und minimal Werte berechnet werden. Hier sind dann nur die Bedingungen X3, X4, Y3 und Y4 nötig.
Jetzt bin ich mal gespannt, ob mir jemand ein Beispiel liefern kann bei dem das nicht funktioniert...