Ich habe es geschafft, die Wegfindungsarbeit für eine einzelne Einheit zu erledigen, und ich habe es geschafft, die Kollision von Agenten und Agenten zu vermeiden, aber jetzt muss ich in der Lage sein, eine Gruppe von Agenten an einen bestimmten Ort zu senden.
Das ist mein Setup bisher:
- Wegpunkt-Wegfindung
- Der Mindestabstand zwischen zwei Knoten ist etwas größer als der größte für einen Agenten zulässige Kugelradius.
- Agenten vermeiden Kollisionen mit anderen Agenten, indem sie ein Lenkverhalten ausführen, das auf einem eindeutigen Pfad basiert
Also muss ich jetzt meine Agenten irgendwohin in die Gruppe schicken. Ich habe einige Posts gelesen, die besagen, dass ein Weg dies zu tun darin besteht, einen Gruppenleiter zu erstellen und den anderen Einheiten einen Versatz für seine Position zu geben.
Aber dann ist das Problem, was ist, wenn die Gruppenbildung nicht erreicht werden kann? Sie möchten z. B. ein Rechteck bilden, aber an der Zielposition befindet sich eine Struktur in der Nähe, die Sie daran hindert, ein Rechteck-Setup zu erstellen.
quelle
Antworten:
Bei Gamasutra gibt es tatsächlich einen ziemlich netten Artikel darüber. Und behandelt Themen wie Formationen und das Auflösen von Kollisionen:
Und ein weiterer Artikel von ihnen zum selben Thema, der etwas kürzer ist, aber mehr Pseudocodebeispiele enthält:
Schließlich ist die Idee eines "Flow Field" Supreme Commander 2, der dies verwendet , ein guter Gedanke bei der Implementierung Ihres Systems . Und es basiert auf der Crowd Flows- Forschung der Washington State University .
quelle
Ich denke, du kannst eine unsichtbare "Herdeneinheit" haben, die der Boss der Formation ist, und die anderen Kreaturen dazu bringen, sich relativ zu dieser Einheit zu positionieren. Wenn sich dieses Objekt drehen kann, dreht sich auch die relative Position.
... oopos .. das machst du schon.
Was ist damit:
Warum können Sie keine neuen Positionen für die kollidierenden Entitäten berechnen? Ich muss nicht schick sein, vielleicht einfach eine Linie vom gewünschten ursprünglichen Punkt und der Führungslinie ziehen und die gewünschte Position in die Mitte dieser Linie verschieben. Erneut auf Kollision prüfen.
quelle