"Unclutter" -Einheiten im RTS-Spiel

7

Aus absichtlichen Gründen haben bestimmte Einheiten in dem Spiel, das ich gerade programmiere, keine Kollisionserkennung und -reaktion untereinander.

Dies ermöglicht es ihnen, direkt übereinander zu liegen. Dies ist ein gewünschtes Verhalten, da es Situationen im Spiel geben wird, in denen der Spieler möchte, dass sie sich so stapeln.

Ich möchte dem Spieler jedoch das Aufräumen erleichtern, sodass er nur einen Hotkey drücken oder auf eine Schaltfläche auf dem Bildschirm klicken muss und die Einheiten gerade so weit verteilt sind, dass es einfach ist, eine Gruppe von ihnen mit dem auszuwählen Maus (wenn sie übereinander stehen, wählt ein Mausklick alle Einheiten aus).

Wie könnte ich dies tun, ohne eine Brute Force N ^ 2-Suche nach dem nächsten Nachbarn für alle Einheiten durchzuführen?

TravisG
quelle
4
Das Wort, das Sie suchen, ist "Cluster", nicht "Unordnung".
Nicol Bolas

Antworten:

8

Erstellen Sie ein Raster mit genügend Platz für alle Einheiten, die Sie "übersichtlich" machen möchten. Lassen Sie sie jeweils den nächsten nicht beanspruchten Rasterplatz auswählen . Lassen Sie sie dann in Richtung ihres jeweiligen Rasterraums bewegen.

Geben Sie hier die Bildbeschreibung ein

Dadurch werden sie in eine Art Formation versetzt, in der der Spieler leicht eine einzelne Einheit auswählen kann.

Das ist eine O (N) -Operation mit ziemlich guten Ergebnissen.

MichaelHouse
quelle
Oh wow, das ist unglaublich einfach und effektiv. Vielen Dank!
TravisG
2
Kein Problem! Ich würde auch versuchen, mit verschiedenen Formationen wie Spiralformen und Kreisen zu experimentieren. Habe Spaß.
MichaelHouse