2016-05-17 4 views
1

Ich erschaffe ein endloses Jump-Game. Ich habe viele Hindernisse geschaffen, um zufällig für Zeit und für Spawn zu spawnen, aber jetzt möchte ich, dass die Hindernisse nicht an der gleichen Stelle wie die vorherigen spawnen, weil sie spawnen, aber manchmal können sie auch auf der anderen spawnen oder in der Nähe der anderen oder sogar in ihnen, also bitte hilf mir! Code:Wie man sicherstellt, dass keine Objekte übereinander liegen (zufälliger Spawn-Standort)

using UnityEngine; 
using System.Collections; 

public class SpawnObstacles : MonoBehaviour { 
    public GameObject[] Obstacle; 
    public float MINTObstacle; 
    public float MAXTObstacle; 
    public bool spawning = false; 
    public Transform pos; 
    void Update() 
    { 
     if (!spawning) 
     { 
      StartCoroutine("SpawnObstacle"); 
     } 
    } 
    IEnumerator SpawnObstacle() 
    { 
     spawning = true; 
     yield return new WaitForSeconds(Random.Range(MINTObstacle, MAXTObstacle)); 
     Vector2 finalposition = new Vector2(Random.Range(3,7), Random.Range(pos.position.y - 6f, pos.position.y - 6f)); 
     Instantiate(Obstacle[Random.Range(0, Obstacle.Length)], finalposition, Quaternion.identity); 
     spawning = false; 
    } 

} 
+0

Erstellen Sie eine 2D-Karte aller möglichen Positionen, die ein Objekt spawnen kann. Wenn das Objekt spawnt, markieren Sie es auf der Karte. Sobald das Objekt außerhalb des Bildschirms ist, entfernen Sie es von der Karte. –

Antwort

0

Ich denke, was Sie wollen, ist eine Art Rahmen um jedes Hindernis begrenzt, die das „padding“ darstellen, die Sie rund um dieses Hindernis wollen, wenn keine anderen platziert werden kann. Zu diesem Zweck könnten Sie einen primitiven Collider verwenden.

Wenn Sie ein neues Hindernis an einer zufälligen Position erstellen, können Sie überprüfen, ob sein "Padding" mit dem "Padding" eines anderen Hindernisses kollidiert, und falls dies der Fall ist, berechnen Sie die zufällige Position erneut.

Ein Problem sehe ich, wenn Sie einen sehr überfüllten Platz haben, muss diese Überprüfung viele Male wiederholt werden, bevor ein gültiger Ort gefunden wird. Vielleicht möchten Sie die Anzahl der möglichen Prüfungen begrenzen, und wenn es keinen gültigen Punkt findet, wird das Objekt nach 20 Versuchen nicht erzeugt.

+1

yeha, ich denke schon, ich werde es versuchen! –

Verwandte Themen