2016-05-17 62 views
1

我正在創造一個無盡的跳躍遊戲。我已經創造了很多障礙,隨機產生時間和空間,但現在我想讓這些障礙物不像以前那樣產生在同一個地方,因爲它們正在產卵,但有時它們會產生在另一個的頂部或靠近其他人或甚至在他們內部,所以請幫助我! 代碼:如何確保物體不會產生在另一個物體上(隨機產卵位置)

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

創建一個對象可以產生的所有可能位置的二維地圖,然後當對象在地圖上產生標記時,一旦對象關閉,將其從地圖上移除 –

回答

0

我想你想要的是某種圍繞代表要圍繞這一障礙,沒有其他可以被放置在「填充」每一個障礙邊界框。您可能會使用原始對撞機來實現此目的。

當您創建在一個隨機位置的新的障礙,你可以檢查,看看它的「填充」與其他障礙的「填充」碰撞,如果是的話,重新計算的隨機位置。

一個問題我可以預見,如果你有一個非常擁擠的空間,找到一個有效的位置之前,該檢查可能需要重新做很多很多次。您可能想要限制它可以執行的檢查次數,並且如果它沒有找到有效的地點,它只是在20次左右後才生成對象。

+1

yeha,我想是的,我將試試! –