Momentan hat mein sehr einfaches KI-Framework Agenten, die sich auf einem gezackten Pfad bewegen, der aus einer Reihe von Punkten besteht.
Dazu verschieben sie einfach ihre Position von einem Punkt zum nächsten. Wenn sie den nächsten Punkt erreichen, bewegen sie sich zum nächsten und so weiter. Wie kann ich dies ändern, damit sie sich gleichmäßig entlang einer gekrümmten Version des Pfads bewegen, und wie kann ich die Kurve generieren?
mathematics
algorithm
path-finding
SirYakalot
quelle
quelle
Antworten:
Du bist nach einer Art Wegeglättung. Natürlich möchten Sie, wie Bummzack betont hat, auch sicherstellen, dass jede von Ihnen durchgeführte Pfadglättung zu rechtlichen Bewegungen für Ihre Agenten führt.
Dieser Artikel von Gamasutra erklärt so ziemlich alles, was Sie wissen müssen, einschließlich Wegeglättung, legaler Abbiegungen und realistischer, reibungsloser Abbiegealgorithmen.
Eine andere, etwas einfachere Alternative besteht darin, ein Suchverhalten mit einem kleinen Begrenzungskreis / einer kleinen Begrenzungskugel zu verwenden, um zu überprüfen, ob sich der Agent am nächsten Punkt auf dem Pfad oder in dessen Nähe befindet.
quelle
Da Sie Ihre Kontrollpunkte bereits kennen, müssen Sie nur Ihren Interpolationscode aktualisieren, um einen Algorithmus für die Krümmung zu verwenden (z. B. Hermite oder Cosine).
Diese Sites bieten eine großartige Erklärung und Beispielcode, die Ihnen den Einstieg erleichtern sollen:
Paul Bourke Interpolationsmethoden
Sol :: Tutorials - Interpolationstricks
quelle
Ich gehe hier gegen den Strich und schlage vor, dass Sie Ihre Kurven nicht vorab generieren, sondern nur Frame für Frame behandeln, indem Sie (zum Beispiel) dieselbe Logik verwenden, die Sie zum Erstellen einer Referenzierung verwenden würden Rakete .
Dies wird viel einfacher und wahrscheinlich realistischer, da Sie keine Sonderfälle benötigen, wenn sich Wände zwischen zwei Punkten befinden. Sie führen die Kollisionserkennung einfach wie gewohnt aus.
Der Nachteil ist, dass die Bewegung nicht optimal aussieht. Das Objekt nimmt immer den direktesten Weg von einem Wegpunkt zum nächsten, was bedeutet, dass es sich im Gegensatz zu einem Spline erst dann in Richtung Wegpunkt 3 dreht, wenn es bereits Wegpunkt 2 passiert hat. Abhängig von Ihrer Situation kann dies sein oder nicht Beheben Sie das Problem, indem Sie Ihre Wegpunkte anpassen (falls es überhaupt ein Problem gibt).
quelle
Der Pfadfinder sollte Ihnen den Pfad anzeigen und Sie sollten ihn nicht ändern. Ich glaube, dass es möglich ist, Ihren Pfadfinder-Algorithmus so zu ändern, dass er berücksichtigt, dass Pfade mit scharfen Kurven geschrieben werden als solche mit glatten Kurven, wie dies bereits bei langen und kurzen Pfaden der Fall ist.
Ich werde hier eine Lösung veröffentlichen, wenn ich einen Moment finde, um tief darüber nachzudenken, aber ich denke, das ist der richtige Weg.
quelle