Unity_寻路系统

来源:互联网 发布:cnc编程软件排行榜 编辑:程序博客网 时间:2024/04/28 05:20

就像英雄联盟等游戏里的小兵一样,按照规定好的路线自行移动。

using UnityEngine;using System.Collections;using System;//寻路系统public class PathfindingSystems : MonoBehaviour {    //保存所有的路点    public GameObject[] points;    //记录下一个即将到达的路点    int nextPointIndex;    //速度    public int speed;    // Use this for initialization    void Start () {        //寻找所有的路径点对象        points = GameObject.FindGameObjectsWithTag("EnemyPoint_GJG");        //上面的方法获取到的路点在数组中保存的顺序是降序的,我们使用Sort重新排序,Sort默认是升序状态,我们也可以使用Rever        Array.Sort(points, (x, y) => { return x.name.CompareTo(y.name); });        //设置游戏对象的初始位置        transform.position = points[0].transform.position;        //设置初始角度        transform.forward = points[nextPointIndex].transform.position - transform.position;    }    // Update is called once per frame    void Update () {        //判断自身距离下一个路径点的位置,0.1f是在贴近下一个路径点时提前0.1f的距离转向,不会出现抖动        if (Vector3.Distance(points[nextPointIndex].transform.position,transform.position)<0.1f)        {            //如果下一个路径点不是最后一个则加一,-1是获取Points的最大索引值            if (nextPointIndex != points.Length - 1)            {                nextPointIndex++;            }        }         //设置每一个点的转向            transform.forward = points[nextPointIndex].transform.position - transform.position;        //全军出击        transform.position =   Vector3.MoveTowards(transform.position,points[nextPointIndex].transform.position, speed * Time.deltaTime);    }}

这里呢我先建立了一个空物体,在创建几个球体并放在空物体内排序,然后把球体的Tag修改后,如下图:
这里写图片描述
然后把脚本挂给小兵,然后把球体拖拽到挂载在小兵的脚本里,如下图:
这里写图片描述
最后的效果图
这里写图片描述