3月13日
再不开学我人没了
在场景中随机产生wall,river,barrier等,先定义一个数组存放已经有东西的位置,避免重复生成,然后在生成方法中将每次生成的物体坐标加到数组中
//产生随机位置的方法
private Vector3 CreateRandomposition()
{
//不生成x=-10,10,两列,y=-8,8,两列
while (true)
{
Vector3 creatposition = new Vector3(Random.Range(-9, 10), Random.Range(-7, 8),0);
if (PositionCharge(creatposition))
{
return creatposition;
}
}
}
//判断位置是否存在物体
private bool PositionCharge(Vector3 createPos)
{
for(int i = 0; i < itemPosiotion.Count; i++)
{
if (createPos == itemPosiotion[i])
return false;
}
return true;
}
在周围放置一圈空气墙放置玩家和子弹越界
//实例化地图
for(int i = 0; i < 40; i++)
CreateItem(item[1], CreateRandomposition(), Quaternion.identity);
for (int i = 0; i < 20; i++)
CreateItem(item[2], CreateRandomposition(), Quaternion.identity);
for (int i = 0; i < 20; i++)
CreateItem(item[4], CreateRandomposition(), Quaternion.identity);
for (int i = 0; i < 20; i++)
CreateItem(item[5], CreateRandomposition(), Quaternion.identity);
//初始化玩家,将born的bool值设为true
GameObject go = Instantiate(item[3], new Vector3(-2, -8, 0), Quaternion.identity);
//初始化敌人
CreateItem(item[3], new Vector3(-10, 8, 0), Quaternion.identity);
CreateItem(item[3], new Vector3(-0, 8, 0), Quaternion.identity);
CreateItem(item[3], new Vector3(10, 8, 0), Quaternion.identity);
用一个延时函数每隔一段时间生成一个敌人
InvokeRepeating("CreateEnemy", 4, 5);//方法,延时多久第一次调用,每隔多久调用
这样游戏就大致完成