unity塔防游戏开发之基于标点法来简易实现敌人路线移动
首先创建一个物体,把它设置为静态物体,给他创建一系列子物体,将这些子物体放在各个路线的转角处,这样就实现标点的目的,然后将这些路标的位置都设置好之后,可以开始写脚本了
public static Transform[] positions;
private void Awake()
{
positions = new Transform[transform.childCount];
for(int i = 0;i < positions.Length; i++)
{
positions[i] = transform.GetChild(i);
}
}
将它们的位置都保存在一个数组中,然后将这个脚本挂载在场景的物体中,来实现保存各个路标的目的,接下来就要写敌人的位置移动的脚本:
public float speed = 10;
private Transform[] positions;
private int index = 0;
// Start is called before the first frame update
void Start()
{
//用这个变量来保存你设置的路标的位置
positions = wayPoints.positions;
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
if (index > positions.Length - 1) return;
//Translate是一个移动方式,可以直接调用,
//从这个物体本身的位置移动到路标位置
transform.Translate((positions[index].position - transform.position).normalized * Time.deltaTime * speed);
//这个路标位置到达之后,索引到下个路标的位置
if(Vector3.Distance(positions[index].position , transform.position) < 0.2f)
{
index++;
}
if(index > positions.Length - 1)
{
//如果下标越界,表明到达最后目的地,可以在里面添加操作,比如掉血,销毁敌人
}
}
这样就实现,用标点法来完成敌人从生成地点到达目标地点的路线设计,使用简单的路标法来完成这个路线的指定。
以上是个人学习笔记,仅供参考。