Unity3d NavMesh работает странно, не могу понять почему

Первая волна зеленого цвета идет направо (до первой путевой точки), но после удлинения туннеля вторая волна - это то, почему зеленый цвет теряет первую путевую точку и идет прямо ко второй. (И почему это как-то окольным путем)

Извините за мой плохой английский.

Первая волна зеленого цвета идет направо (до первой путевой точки), но после удлинения туннеля вторая волна - это то, почему зеленый цвет теряет первую путевую точку и идет прямо ко второй. (И почему это как-то окольным путем)

На самом деле два вопроса: 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);
    }
}

0 ответов

Было решено, что дело в том, что NavMesh делает большие плитки (NavMeshBuildSettings.tileSize), но я не мог изменить это, потому что использовал чужую работу ( https://github.com/Unity-Technologies/NavMeshComponents/tree/mast mples Скрипты). Итак, оказалось, что для изменения времени выполнения navMesh необходимо не только зарегистрироваться в коде изменения сетки, но и написать строку (.overrideTileSize = true;)

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

После этого мне удалось изменить размер плитки, и выбор неправильного пути был остановлен.

Другие вопросы по тегам