Wie kann man in Unity machen das zufällig viele objects fehlen?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde zunächst die Objekte bestimmen, die platziert werden sollen. Ich gehe einmal davon aus, dass jedes konkrete Objekt im Array individuell ist.

Das Array kann man also zuerst einmal zufällig sortieren:

for (var index = 0; index < objects.Length; ++index)
{
  var temp = objects[index];
  var randomIndex = Random.Range(index, objects.Length);
  objects[index] = objects[randomIndex];
  objects[randomIndex] = temp;
}

Dann holt man sich eine zufällige Anzahl an Elementen und nutzt diesen Wert später für die Schleife, die die Objekte schließlich platzieren soll.

var numberOfObjectsToSet = Random.Range(0, objects.Length);

An der Stelle ist dann auch klar, wie viele Spawn-Punkte benötigt werden. Deshalb würde ich diese auch erst jetzt ermitteln. Um Duplikate zu vermeiden, kann man auch an dieser Stelle überlegen, die Spawn-Punkte wieder erst zufällig zu sortieren.

Es sollte übrigens darauf geachtet werden, dass es generell nicht mehr Objekte als Spawn-Punkte gibt.

Die Platzierung sieht dann so aus:

for (int index = 0; index < numberOfObjectsToSet.Length; ++i)
{
  Instantiate(objects[index], spawnpoints[index].position, Quaternion.identity);
}