У меня очень странная проблема.
Я создал ИИ, используя инструменты navmesh и собственный скрипт, который продолжает назначать новое назначение агенту navmesh после достижения старого назначения.
Мне пришлось заменить модель для этого ИИ (раньше была капсулой), поэтому я сделал это, скопировал почти все компоненты, отрегулировал несколько параметров, таких как высота агента и т. Д., И запустил его.
ИИ капсулывыполняет свою работу должным образом, но ИИ с правильной моделью явно не делает.
После отладки я обнаружил, что Список назначений для моделируемого ИИ состоит из Vector3.zero, в то время как ИИ капсулы имеет правильныйvector3s в списке пунктов назначения.
Вот мой сценарий назначения AI:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class AIMovement : MonoBehaviour
{
private NavMeshAgent _navMeshAgent; //reference to the navmesh agent
private MapController _mapControllerScript; //reference to the map controller script to access waypoints
private List<Vector3> _wayPoints = new List<Vector3>();
private Vector3 _destination;
// Use this for initialization
void Start()
{
_mapControllerScript = GameObject.Find("Map_01").GetComponent<MapController>();
SetWayPointLocations();
_navMeshAgent = this.GetComponent<NavMeshAgent>();
Debug.Log(_mapControllerScript.ToString());
Debug.Log(_mapControllerScript.HealthPickUpPositions.ToString());
Debug.Log(_navMeshAgent);
Debug.Log(_wayPoints);
foreach (Vector3 waypoint in _wayPoints)
{
Debug.Log(waypoint);
}
}
// Update is called once per frame
void Update()
{
MoveAroundMap();
}
void MoveAroundMap()
{
if (_navMeshAgent.transform.position.x == _destination.x &&
_navMeshAgent.transform.position.z == _destination.z
|| _destination == new Vector3(0, 0, 0)
)
{
Debug.Log("Acquiring new position");
_destination = _wayPoints[Random.Range(0, _wayPoints.Count-1)];
}
_navMeshAgent.SetDestination(_destination);
}
void SetWayPointLocations()
{
foreach (Vector3 waypoint in _mapControllerScript.HealthPickUpPositions)
{
_wayPoints.Add(waypoint);
}
foreach (Vector3 waypoint in _mapControllerScript.AmmoPickUpPositions)
{
_wayPoints.Add(waypoint);
}
}
}
Вот консоль: вы можете ясно видеть, что координаты капсульного AI верны, а координаты сломанного ИИ (0, 0, 0) .
Вот окно иерархии : Капсулаэто рабочий AI, Character_Piccolo нерабочий.
Вот инспектор капсулы, рабочийAI .
Вот инспектор модели, сломанный AI .
Извините, что так долго, но я хотел убедиться, что вы, ребята, получили всю необходимую информацию.
Заранее спасибо!