Momentan erstelle ich ein Spiel, in dem das ganze Level generiert wird, wenn der Spieler sich bewegt. Ich habe ein funktionierendes Skript dafür, aber jetzt möchte ich Hindernisse vor dem Spieler erzeugen. Meine Idee ist es, meinem Terrain-Segment ein leeres Objekt hinzuzufügen (diese werden dynamisch generiert) und dann zufällige Hindernisse an ihrer Position zur Laufzeit zu instanziieren. Das einzige, was ich nicht weiß, ist, wie dieses Skript ein zufälliges leeres Objekt (leeres Objekt ist Kind des Segments) auswählt, um dieses Hindernis zu instanziieren? Das Skript, das den Level generiert, ist an den Player angehängt.Zufälliges Erzeugen von Hindernissen in Unity
Antwort
Dies gibt Ihnen eine Idee, wie es geht. Spawnt ein zufälliges Spielobjekt auf eines der leeren Spielobjekte in Ihrem Gelände.
//Add the random objects in the inspector
public List<GameObject> gameObjects;
//Spawn points around the terrain
public List<Transform> emptyTransforms;
foreach(var item in emptyTransforms){
var objToSpawn = gameObjects[Random.Range(0, gameObjects.Length)];
var objSpawned = Instantiate(objToSpawn, emptyTransforms[Random.Range(0, emptyTransforms.Length)].position, Quaternion.identity);
objSpawned.transform.SetParent(newParent);
}
Gibt es eine Möglichkeit, dieses Kind Spielobjekte in Skript zu bekommen? Das würde sehr helfen. –
@faken Sie müssen keine zufälligen Objekte als Kind von leeren Spielobjekten einfügen oder umgekehrt. Legen Sie einfach die leeren Spielobjekte um Ihre Szene und ziehen Sie dann die zufälligen Spielobjekte (die in Ihrem Ordner, die Sie instanziieren) und die Szenen leeren Spielobjekte auf die öffentlichen Listen im Skript. –
Ok, es funktioniert sehr gut, aber ich habe noch ein Problem: Wie kann ich diese Objekte zerstören, nachdem das Terrain-Segment, von dem sie erzeugt wurden, zerstört wurde? –
Verwenden Sie die Random.Range-Funktion, um zufällige Werte zu berechnen. Dann machen Sie die Werte innerhalb der Grenzen, wo Sie spacen möchten, und erstellen Sie ein Vector3 mit diesen Werten. Jetzt werden die Hindernisse in einem zufälligen Bereich erzeugt.
Wenn Sie eine feste Liste möglicher Positionen haben, speichern Sie sie einfach in einer öffentlichen Variablen im Skript. Wenn Ihre leeren Spielobjekte die Positionen sind, erstellen Sie eine public GameObject[] positions;
, füllen Sie sie und verwenden Sie etwas wie Random.Range
, um eines davon auszuwählen.
Auch ich schlage vor, Sie betrachten Element Pooling und nicht instanziieren neue Objekte die ganze Zeit (und wahrscheinlich "alte" zerstören). Das ist besser für deine Leistung.
- 1. C++ Zufälliges Generieren von Vielfachen von 16
- 2. Wie sollte ich ein solches Bild in Unity erzeugen?
- 3. Zufälliges Sortieren eines Arrays
- 4. Unity-Netzwerk: kann keine Szenenobjekte auf allen Clients erzeugen
- 5. Zufälliges Dokument in ElasticSearch
- 6. Zufälliges Datum in C#
- 7. Zufälliges Zeichnen von einem Hyperwürfel in Matlab
- 8. Javascript seltsames zufälliges Verhalten
- 9. Erstelle zufälliges fallendes Objekt in Jquery
- 10. Berechnen Sie den Winkel zum Kreis mit Vermeidung von Hindernissen
- 11. Zufälliges Array-Element in F #
- 12. Erzeugen von MIDI in Javascript
- 13. Zufälliges Element in einer Karte
- 14. Erstellen von Grafiken in Unity
- 15. Zufälliges Erzeugen einer Entfernung innerhalb eines Radius ergibt einen Punkt außerhalb der Grenzen
- 16. Zufälliges variables Ergebnis
- 17. Zufälliges Blinken LEDs
- 18. Zufälliges Wort Generator-Python
- 19. cocos2d laden zufälliges Bild von Sprite Sheet
- 20. Zufälliges Salz Verschlüsselung/Entschlüsselung
- 21. Wie erstellt man ein zufälliges Pacman-Labyrinth
- 22. PHP - Wie ein zufälliges Bitstrom erstellen
- 23. SQL zufälliges Aggregat
- 24. Ruby zufälliges Array
- 25. iOS: Zufälliges Video von Youtube-Kanal?
- 26. Zufälliges Hintergrundbild bei Aktualisierung
- 27. ReactJS - Target zufälliges Element
- 28. Erzeugen von Pastellfarben
- 29. keine Wiederholung zufälliges Bild
- 30. Was ist ein guter Weg, um ein zufälliges "Site-Salz" zu erzeugen, das beim Erstellen von Passwortabruf-Token verwendet wird?
Erwarten Sie nicht, dass Leute Code für Sie schreiben. Zumindest einen Code zur Verfügung stellen. Geben Sie, was Sie versucht haben und jemand kann Ihnen helfen. – Programmer
Mein Problem ist, dass ich keine Funktion finden kann, die Kind zurückgeben würde oder es transform.position und ich bin fest. Ich habe einige Funktionen gesehen, die das tun sollten, aber keiner von ihnen hat für mich funktioniert. –