本文主要是介绍塔防游戏固定路线解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在塔防我们需要小怪沿着固定路线行走,今天就给大家分享一下我的方法,直接上代码可在代码里看分析:
首先我们在场景里建立好Cube当作怪,Capsule来当作固定路点的点
接下来我们写一个脚本,将他绑定在Cube身上:
//建立路点数组
public GameObject[] pathPoint;
//开始的索引
int nextPathPointIndex = 1;
// Use this for initialization
//设置速度
public float speed;
void Start () {
//这里我们把所有Capsule的Tag值设置为Path
pathPoint = GameObject.FindGameObjectsWithTag("Path");
//将他们进行排序,如果运行时出现怪不按路点行走,可在场景看一下GameObject[]是否按顺序排列!!!
Array.Sort(pathPoint,(x,y)=> { return x.gameObject.name.CompareTo(y.gameObject.name); });
//设置怪的初始位置
transform.position = pathPoint[0].transform.position;
//设置初始方向
transform.forward = pathPoint[nextPathPointIndex].transform.position - transform.position;
}
// Update is called once per frame
void Update () {
if (Vector3.Distance(pathPoint[nextPathPointIndex].transform.position, transform.position) <5)
{
//如果不是最大的索引就让他继续++;
if (nextPathPointIndex != pathPoint.Length - 1)
{
nextPathPointIndex++;
}
//判断怪与路点之间的距离
if (Vector3.Distance(pathPoint[pathPoint.Length - 1].transform.position, transform.position) < 0.1f)
{
transform.position = pathPoint[pathPoint.Length - 1].transform.position;
return;
}
transform.forward = pathPoint[nextPathPointIndex].transform.position - transform.position;
}
transform.Translate(Vector3.forward * Time.deltaTime *speed, Space.Self);
}
写好后返回场景,将路点拖入数组槽,运行可得到一下效果:
在游戏中我们是不想看到这些Capsule的,这时我们可以将所有Capsule右边组件的这个组件勾去掉
谢谢大家耐心的观看。
这篇关于塔防游戏固定路线解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!