思路:
- 每个道路末尾(主角跑过,看不到前道路处)添加一个触发器
- 主角进入触发,跑过的跑道进行回收
- 使用两个指向,一个是当前跑道执行 now 一个是下一个跑道next,进入触发以后,next赋值给now,next重新生成,设置next的位置,next的位置为:row的位置加上跑道的长度
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoadChange : MonoBehaviour
{
GameObject roadNow;//当前道路的指向
GameObject roadNext;//下一个道路的指向
GameObject parent;//道路的父物体
private void Start()
{
if (parent==null)//创建父物体
{
parent = new GameObject();
parent.transform.position = Vector3.zero;
parent.name = "Road";
}
//对两个指向进行赋值
roadNow = Game.Instance.objectPool.Spawn("Pattern_1", parent.transform);
roadNext = Game.Instance.objectPool.Spawn("Pattern_2", parent.transform);
roadNext.transform.position += new Vector3(0, 0, 160);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag==Tag.road)
{
//回收跑过的道路
Game.Instance.objectPool.Unspwan(other.gameObject);
//生成新的道路
SpawnNewRoad();
}
}
//生成新的道路
void SpawnNewRoad()
{
int i = Random.Range(1,5);
//更换指向
roadNow = roadNext;
roadNext = Game.Instance.objectPool.Spawn("Pattern_"+i.ToString(), parent.transform);
//设置道路的位置
roadNext.transform.position = roadNow.transform.position + new Vector3(0, 0, 160);
}
}
有需要学习视频的欢迎关注微信公众号