对一些2d游戏反复用一个关卡,但不希望每次的地图中物体出现的都一样,这就需要用到随机生成地图的方法;怪物也是如此;
首先要得到各种预制体;
如
public GameObject[] OutwallArray;
public GameObject[] leaArray;
public GameObject[] wallArray;
public GameObject[] foodPrefab;
public GameObject[] enemyPrefab;
public GameObject ExitPrefab;
当然我只是举个例子;
最关键的就是要定义一个队列
private List<Vector2> wallList = new List<Vector2>();
关于坐标的队列;
wallList.Clear();
for(int x=2;x<cols-2;x++)
{
for(int y=2;y<rows-2;y++)
{
wallList.Add(new Vector2(x, y));
}
}
首先要将他清空,因为每次都要用这个队列,然后就是要将你所需要产生物体的平面坐标范围内加入到队列当中;
private Vector2 RandomPosition()
{
int Index = Random.Range(0, wallList.Count);
Vector2 pos = wallList[Index];
wallList.RemoveAt(Index);
return pos;
}
这是一个从队列当中随机产生一个索引给与你想要产生的物体,这样它的坐标就会随机产生且不会重复;
差不多就是如此;