R部分就不多说了,AR只是一个工具,重点还是在代码。
1.首先实现身体的跟随效果,一对一就好
- <span style="font-family:SimSun;font-size:24px;">private GameObject player;//要跟随的目标
- void Start()
- {
- player = EnergyCore.energyCoreClo[EnergyCore.energyCoreClo.Count - 1];//追随目标是列表中最后一个单位
- EnergyCore.energyCoreClo.Add(this.gameObject);//把自己加入列表
- }
- void Update()
- {
- //跟随制定目标
- if (Vector3.Distance(player.transform.position, transform.position) > 0.1f)
- {
- transform.LookAt(player.transform.position);
- transform.Translate(Vector3.forward * Time.deltaTime * 0.2f);
- }
- }
- </span>
2.在地图上随机生成身体
- <span style="font-family:SimSun;font-size:24px;">/// <summary>
- /// 限制能量核心的范围
- /// </summary>
- void ShowEnergyCore()
- {
- float x = Random.Range(0.45f, -0.45f);
- float z = Random.Range(0.45f, -0.45f);
- Instantiate(energyCore, new Vector3(x, 0.02f, z), energyCore.transform.rotation);
- }</span>
3.机器人的操纵
- <span style="font-family:SimSun;font-size:24px;">void Update()
- {
- //Score.text = score.ToString();
- //机器人向前方位移
- transform.Translate(Vector3.forward * Time.deltaTime * 0.2f);
- //A和D控制机器人角度
- if (Input.GetKey(KeyCode.A))
- {
- transform.Rotate(new Vector3(0, -1f, 0));
- }
- else if (Input.GetKey(KeyCode.D))
- {
- transform.Rotate(new Vector3(0, 1f, 0));
- }
- }</span>
4.通过碰撞激活身体
- <span style="font-family:SimSun;font-size:24px;">/// <summary>
- /// 机器人碰撞事件
- /// </summary>
- /// <param name="other"></param>
- void OnTriggerEnter(Collider other)
- {
- if (other.gameObject.tag== "EnergyCore")
- {
- other.GetComponent<Follow>().enabled = true;//激活能量核心的追随脚本
- }
- }</span>
5.使用一个列表来存储
- <span style="font-family:SimSun;font-size:24px;"> public GameObject energyCore;//绑定能量核心
- public static List<GameObject> energyCoreClo;//克隆的能量核心
- //public Text Score;//UI分数
- private int score = 0;//计算分数
- void Awake()
- {
- energyCoreClo = new List<GameObject>(4);//声明一个列表
- energyCoreClo.Add(this.gameObject);//把本体加入列表
- InvokeRepeating("ShowEnergyCore", 1, 4);//生成能量核心
- }</span>
齐活。