Jomnitech Geschrieben 4. August 2020 Melden Share Geschrieben 4. August 2020 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 More sharing options...
chrische5 Geschrieben 4. August 2020 Melden Share Geschrieben 4. August 2020 Hallo Könntest du nicht alle go, die du erstellst, speichern und dann abfragen, ob es bereits eins mit der neuen Position gibt? Christoph Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 4. August 2020 Autor Melden Share Geschrieben 4. August 2020 Habe auch daran gedacht alles in ein Array oder Liste zu speichern. Weiss aber nicht wie ich dann das entsprechende Object aus der Liste gelöscht bekomme wenn ich es manuell in der Scene lösche. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Zer0Cool Geschrieben 7. August 2020 Melden Share Geschrieben 7. August 2020 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 More sharing options...
Thariel Geschrieben 7. August 2020 Melden Share Geschrieben 7. August 2020 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. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 13. August 2020 Autor Melden Share Geschrieben 13. August 2020 @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 More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.