Jump to content
Unity Insider Forum

Level Genarator freie Position abfragen


Jomnitech

Recommended Posts

Hallo Zusammen

Ich erstelle derzeit einen Level Generator, der mir an zufälligen Position diverse Prefabs und Hintergründe einfügt. Da alles zufällig aus einer hand voll Prefabs ausgewählt wird, kommt es vor das zwei, drei mal das gleiche Asset nebeneinander liegt, oder es auch einfach so unschön aussieht. Diese lösche ich dann manuell aus der Scene raus, und genereiere sie neu. Dabei kommt es natürlich vor das er an einer Stelle wo schon etwas ist, erneut etwas spawnt.

Nun zu meiner Frage:
Gibt es eine möglichkeit abzufragen ob an der zu spawnenden stelle schon ein GameObject in der Scene ist?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du  kannst deinen Prefabs auch eine Klasse verpassen und dann einfach alle Objekte in der Scene mit dieser Klasse suchen. Wenn du alle Instanzen dieser Klasse hast, dann gehst du einfach die Positionen ihrer Transforms durch:

MeineKlasse[] allObjects = FindObjectsOfType<MeineKlasse>();
foreach (MeineKlasse go in allObjects)
{
  Debug.Log(go.transform.position);
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  1. Du kannst mit Physics.OverlapSphere abfragen, ob der Platz frei ist, sofern du mit Collider arbeitest.
  2. Du kannst Spawn Points nutzen und jeden nur einmal nutzen.
  3. Wie schon erwähnt, könntest du die Objekte in einer Liste speichern und vor einem Spawn die Liste durchgehen und schauen, ob eines er bereits gespawnten Objekte in der nähe ist.
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Zer0Cool

@Thariel

Vielen Dank für eure Antworten, hab jetzt mal eure Antworten kombiniert und bin zufrieden damit. Weil es eh nicht runtime passiert ist es auch wumpe wie performant es ist.

 

-------------------------------------------------------

Am 7.8.2020 um 21:05 schrieb Zer0Cool:

MeineKlasse[] allObjects = FindObjectsOfType<MeineKlasse>();

Wie definiere ich den Klassen? Muss ich dafür einfach ein Script machen mit der entsprechenden Klasse und es den Objekten hinzufügen?
Hab das jetzt mal mit Tags gemacht 🙃, funktioniert soweit.

 

 

Am 7.8.2020 um 21:39 schrieb Thariel:
  • Du kannst mit Physics.OverlapSphere abfragen, ob der Platz frei ist, sofern du mit Collider arbeitest.
  • Du kannst Spawn Points nutzen und jeden nur einmal nutzen.
  • Wie schon erwähnt, könntest du die Objekte in einer Liste speichern und vor einem Spawn die Liste durchgehen und schauen, ob eines er bereits gespawnten Objekte in der nähe ist.

1. Kann man physik Abfragen durchführen im Editor mode?
2. Da weiss immer noch nicht wie ich die Spawn Points wieder freigeben soll wenn ich was händisch im Editor lösche, oder verstehe ich da etwas falsch?
3. Da wusste ich nicht wie ich was in die Liste bekomme, aber mit dem was Zer0Cool gepostet hat funktionierts. Jetzt kann ich einfach die Liste durchzappen und schauen ob sich was überschneidet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...