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;
После этого мне удалось изменить размер плитки, и выбор неправильного пути был остановлен.