NavMeshAgent不遵循新的重新计算路径

时间:2016-12-07 23:42:33

标签: c# unity3d

当我为游戏对象创建路径时,它会工作并跟随它,但是当我创建一个新路径时,它不会遵循它。造成这种情况的原因是什么?

public class Unit : MonoBehaviour {

    protected NavMeshPath path;

    void Start () {
        path = new NavMeshPath();
        agent = GetComponent<NavMeshAgent>();
        agent.SetPath(path);
    }

    public void SetNextWaypoint(Vector3 location){
        agent.ResetPath();
        agent.CalculatePath(location, path);
        agent.SetPath(path);
    }

}

然后我有一个看起来像这样(简化)的航点类:

public class Waypoint : MonoBehaviour {
    void OnTriggerEnter(Collider other){
        Unit unit = other.GetComponent<Unit>();
        Vector3 next = nextTeam2.position;
        unit.SetNextWaypoint(next);
    }
}

航点触发器正在运行,SetNextWaypoint方法也是如此。然而,游戏对象不会移动到下一个航点。它转到第一个,但一旦到达那里它就不会进入第二个。

1 个答案:

答案 0 :(得分:0)

我明白了!问题是我的下一个航路点位于NavMesh之上太远了。但由于某些原因,path.status仍在返回PathComplete

将Waypoint移近navmesh可让对象转到下一个Waypoint而不是停止。