unity 2017.3 + vuforia 7.0 之 AR贪吃蛇

R部分就不多说了,AR只是一个工具,重点还是在代码。

1.首先实现身体的跟随效果,一对一就好

[html]  view plain  copy
  1. <span style="font-family:SimSun;font-size:24px;">private GameObject player;//要跟随的目标  
  2.     void Start()  
  3.     {  
  4.         player = EnergyCore.energyCoreClo[EnergyCore.energyCoreClo.Count - 1];//追随目标是列表中最后一个单位  
  5.         EnergyCore.energyCoreClo.Add(this.gameObject);//把自己加入列表  
  6.     }  
  7.     void Update()  
  8.     {  
  9.         //跟随制定目标  
  10.         if (Vector3.Distance(player.transform.position, transform.position) > 0.1f)  
  11.         {  
  12.             transform.LookAt(player.transform.position);  
  13.             transform.Translate(Vector3.forward * Time.deltaTime * 0.2f);  
  14.         }  
  15.   
  16.   
  17.     }  
  18. span>  
这样这个身体部分就会追随一个指定的对象了。

2.在地图上随机生成身体

[csharp]  view plain  copy
  1. "font-family:SimSun;font-size:24px;">///   
  2.     /// 限制能量核心的范围  
  3.     ///   
  4.     void ShowEnergyCore()  
  5.     {  
  6.         float x = Random.Range(0.45f, -0.45f);  
  7.         float z = Random.Range(0.45f, -0.45f);  
  8.         Instantiate(energyCore, new Vector3(x, 0.02f, z), energyCore.transform.rotation);  
  9.     }  

3.机器人的操纵

[html]  view plain  copy
  1. <span style="font-family:SimSun;font-size:24px;">void Update()  
  2.     {  
  3.         //Score.text = score.ToString();  
  4.         //机器人向前方位移  
  5.         transform.Translate(Vector3.forward * Time.deltaTime * 0.2f);  
  6.         //A和D控制机器人角度  
  7.         if (Input.GetKey(KeyCode.A))  
  8.         {  
  9.             transform.Rotate(new Vector3(0, -1f, 0));  
  10.         }  
  11.         else if (Input.GetKey(KeyCode.D))  
  12.         {  
  13.             transform.Rotate(new Vector3(0, 1f, 0));  
  14.         }  
  15.     }span>  

4.通过碰撞激活身体

[html]  view plain  copy
  1. <span style="font-family:SimSun;font-size:24px;">/// <summary>  
  2.     /// 机器人碰撞事件  
  3.     /// summary>  
  4.     /// <param name="other">param>  
  5.     void OnTriggerEnter(Collider other)  
  6.     {  
  7.         if (other.gameObject.tag== "EnergyCore")  
  8.         {  
  9.             other.GetComponent<Follow>().enabled = true;//激活能量核心的追随脚本  
  10.         }  
  11.     }span>  

5.使用一个列表来存储

[html]  view plain  copy
  1. <span style="font-family:SimSun;font-size:24px;">    public GameObject energyCore;//绑定能量核心  
  2.     public static List<GameObject> energyCoreClo;//克隆的能量核心  
  3.     //public Text Score;//UI分数  
  4.   
  5.     private int score = 0;//计算分数  
  6.     void Awake()  
  7.     {  
  8.         energyCoreClo = new List<GameObject>(4);//声明一个列表  
  9.         energyCoreClo.Add(this.gameObject);//把本体加入列表  
  10.         InvokeRepeating("ShowEnergyCore", 1, 4);//生成能量核心  
  11.     }span>  
这是戏肉部分:首先克隆身体,身体的脚本是没有激活的所以不会移动,然后我们操纵机器人转换角度去碰撞身体,激活脚本,身体去检索列表最后一个元素,跟随这个元素并且将自己加入这个列表,一个循环就完成了,当然我们在最开始把机器人加入列表作为第一个元素,要不然第一个碰撞的身体就找不到跟随目标了。

齐活。

你可能感兴趣的:(AR)