Ich mache ein 2D-Spiel. Derzeit fliegt ein Hubschrauber herum, der vom Spieler gesteuert wird. Die Steuerung erfolgt über die Pfeiltasten: AUF, LINKS und RECHTS.
Die Geschwindigkeit entlang der y-Achse ist dy
und die Geschwindigkeit entlang der x-Achse ist dx
.
Die Physik ist wie folgt:
Wenn UP nicht gedrückt wird , dy
beschleunigt es mit konstanter Beschleunigung auf unbestimmte Zeit nach unten. (Schwere). dx
bleibt in seinem aktuellen Wert.
Wenn UP gedrückt wird , dy
beschleunigt es mit konstanter Beschleunigung von dem, was es gerade ist, auf 4 (nach oben, bis es Geschwindigkeit 4 erreicht). dx
bleibt in seinem aktuellen Wert.
Wenn LINKS gedrückt wird , dx
wird mit konstanter Beschleunigung von -10 auf -4 beschleunigt .
Wenn RECHTS gedrückt wird , beschleunigt dx mit konstanter Beschleunigung von derzeit auf 4 .
(Wenn LINKS oder RECHTS gedrückt wird und UP nicht gleichzeitig gedrückt wird, wie gesagt: wird dy
immer kleiner, weil die Schwerkraft den Hubschrauber beeinflusst)
All dies führt dazu, dass der Hubschrauber häufig Bögen in der Luft folgt und nicht geraden Linien.
Dies schafft Physik, die ziemlich realistisch erscheint.
Meine Frage ist:
Der gegnerische Hubschrauber, eine KI, sollte sich mit demselben Physiksystem bewegen.
Nehmen wir an, die KI möchte von dort, wo sie sich gerade befindet, zu Punkt B gelangen.
Wenn es keine Schwerkraft und keine allmähliche Beschleunigung im Spiel gäbe, wäre es einfach. Ich würde einfach einen Vektor von der Position der KI zu Punkt B zeichnen und die KI dazu bringen, ihm zu folgen.
Da es jedoch Schwerkraft und allmähliche Beschleunigung gibt, kann sich die KI niemals (fast) geradlinig bewegen . Was wäre der beste Weg, um die KI so zeiteffizient wie möglich zu Punkt B zu bringen?
Wie kann ich die Schwerkraft berücksichtigen, wenn ich die KI auf ein bestimmtes Ziel hin bewege?
(Wenn es einfacher zu erklären ist, betrachten Sie Punkt B auf der y-Achse als auf der gleichen Ebene wie die KI und nicht diagonal dazu.)
Vielen Dank