赛道(障碍物)生成
我们在做跑酷游戏的时候要明白这几点:
赛道的生成以及消失
障碍物的生成以及消失
我们先来讲赛道的生成,什么时候生成?又什么时候消失?
解决方法是我们要用到触发器,当角色到达触发点的时候,在角色的前方自动生成赛道,这里我们要用到对象池,当我们赛道到角色的距离大于多少的时候我们就回收赛道,优化性能。
1、触发点就是我们在赛道(Trackshort)上新加一个(Trackpoint)盒型碰撞器并且勾选触发器,并且新建一个标签给它,是为了和赛道上的盒型碰撞器区分开,赛道上的盒型碰撞器不勾选触发器。
2、下面创建一个Trackcreator类来生成赛道,把脚本挂在gamemanger上
首先我们要定义几个
// An highlighted block
public List<GameObject> lists = new List<GameObject>();//对象池,对象池就是一个集合
public GameObject[] tracks;//放有赛道的数组
private static Trackcreator instance;//单例类
public static Trackcreator Instance {
get {
return instance; } }//单例类就是全局类
在Start里面完成单例类
// An highlighted block
void Start()
{
if (instance != null)
{
Destroy(this.gameObject);
return;
}
else
{
instance = this;
}
}
我们新写一个赛道的函数Creator()
// An highlighted block
public GameObject Creator()//函数是有返回值的,这里返回的是对象
{
if (lists.Count > 0)//判断对象池里面有没有对象
{
var lastindex = lists.Count - 1;//找到集合里面的最后一个的下标
var lastone = lists[lastindex];//取出集合里最后一个对象
lists.Remove(lastone);//移除该对象
lastone.SetActive(true);//对象激活
return lastone;//返回对象
}
else
{
var newindex