【发布时间】:2022-12-01 17:32:05
【问题描述】:
我最近开始使用 Unity,并决定在 Youtube 上关注 Brackey 的塔防游戏教程。在第 2 部分之后,(https://www.youtube.com/watch?v=aFxucZQ_5E4&list=PLPV2KyIb3jR4u5jX8za5iU1cqnQPmbzG0&index=2) 敌人没有移动。奇怪的是,Unity 控制台中没有显示任何错误。我只有 2 个脚本,如下所示。
航点脚本:
using UnityEngine;
public class Waypoints : MonoBehaviour {
public static Transform[] points;
void Awake ()
{
points = new Transform[transform.childCount];
for (int i = 0; i < points.Length; i++)
{
points[i] = transform.GetChild(i);
}
}
}
敌人脚本:
using UnityEngine;
public class Enemy : MonoBehaviour {
public float speed = 10f;
private Transform target;
private int wavepointindex = 0;
void Start ()
{
target = Waypoints.points[0];
}
void update ()
{
Vector3 dir = target.position - transform.position;
transform.Translate(dir.normalized * speed * Time.deltaTime, Space.World);
if (Vector3.Distance(transform.position, target.position) <= 0.4f)
{
GetNextWaypoint();
}
}
void GetNextWaypoint()
{
if (wavepointindex >= Waypoints.points.Length - 1)
{
Destroy(gameObject);
return;
}
wavepointindex++;
target = Waypoints.points[wavepointindex];
}
}
我已确保 Waypoints 脚本仅在名为“Waypoints”的父级中,其中包含所有 Waypoints。 我的敌人脚本被添加到我场景中的敌人。 我已经多次检查 Youtube 教程以确保代码相同。 Waypoints 脚本在 Enemy 脚本之前运行。我已通过转到“编辑”>“项目设置”>“脚本执行顺序”来确保这一点。 敌人只是静止不动。似乎没有任何效果,请帮助我。谢谢。
【问题讨论】: