Unity3d NavMesh工作异常,无法理解为什么

时间:2018-10-28 03:07:45

标签: c# unity3d navmesh

The first wave of green goes right (to the first waypoint), but after lengthening the tunnel, the second wave is why green you lose the first waypoint and go straight to the second. (And why is that somehow a roundabout way)

对不起,我的英语不好。

第一个绿色路线向右(到达第一个路标),但是在延长隧道长度之后,第二个绿色路线就是为什么绿色会丢失第一个路线并直接到达第二个路标的原因。 (为什么会以某种方式绕行?)

实际上有两个问题:  1)如何修复第一个航点  2)为什么第二个航路点很奇怪

这是敌人遍历航点的代码。

using System;
using UnityEngine;
using UnityEngine.AI;

[RequireComponent(typeof(NavMeshAgent))]
public class EnemyMovement : MonoBehaviour
{
    [SerializeField] public Transform[] points;
    [SerializeField] private int destPoint = 0;
    private NavMeshAgent agent;

    void Start()
    {        
        agent = GetComponent<NavMeshAgent>();
        agent.autoBraking = false;
        agent.destination = points[destPoint].position;
    }

    void GotoNextPoint()
    {        
        if(destPoint != points.Length)
        {
            agent.destination = points[destPoint].position;
        }
    }

    void Update()
    {
        if(agent.remainingDistance < 0.5f)
        {
            destPoint++;
            GotoNextPoint();
        }
    }

    private void OnDrawGizmos()
    {
        Gizmos.DrawLine(gameObject.transform.position, points[destPoint].position);
    }
}

1 个答案:

答案 0 :(得分:0)

已确定问题是NavMesh制作了大图块(NavMeshBuildSettings.tileSize),但是我无法更改它,因为我使用了别人的作品(https://github.com/Unity-Technologies/NavMeshComponents/tree/mast…mpls /脚本)。因此,事实证明,要更改运行时navMesh,不仅必须在网格更改代码中注册,还必须编写行( .overrideTileSize = true;

var defaultBuildSettings = NavMesh.GetSettingsByID (0).overrideTileSize = true;

此后,我能够更改磁贴的大小,并且停止选择错误的路径。