Привет народ! Возникла проблема: есть префаб с NavMeshAgent и скриптом рандомного патрулирования по точкам.
При запуске игры, этот префаб спавнится(изначально он лежит в ассетах проекта) в сцену скриптом, который уже находится на объекте в сцене.
Так-же точки патруля находятся в сцене. Проблема в том, что я не могу повесить эти точки в инспектор скрипта префаба.
Если же я перемещаю точки из иерархии сцены, в ассеты проекта (т.е. автоматически создаются перфабы), то повесить их в инспектор префаба можно,
но при этом префаб начинает двигаться к краю NavMesh, игнорируя точки патруля. Можно ли как-то наследовать точкам которые я перенёс
в ассеты проекта, координаты точек находящихся в иерархии? Я понимаю, что нужно использовать поиск по тэгам, но как найденные объекты добавить в массив не догоню. Сам скрипт:
Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class patrolRandomRotate : MonoBehaviour
{
public Transform[] moveSpots;
private int randomSpot;
NavMeshAgent nav;
public float speed = 3f;
private float waitTime;
public float startWaitTime = 0.5f;
GameObject[] mPoint;
void Start()
{
mPoint = GameObject.FindGameObjectsWithTag("points");
Debug.Log(mPoint.Length);
waitTime = startWaitTime;
randomSpot = Random.Range(0, moveSpots.Length);
}
private void Awake()
{
nav = GetComponent<NavMeshAgent>();
nav.enabled = true;
}
void Update()
{
Patroling();
}
void Patroling()
{
nav.SetDestination(moveSpots[randomSpot].position);
transform.position = Vector3.MoveTowards(transform.position, moveSpots[randomSpot].position, speed * Time.deltaTime);
if (Vector3.Distance(transform.position, moveSpots[randomSpot].position) < 2.0f)
{
if (waitTime <= 0)
{
randomSpot = Random.Range(0, moveSpots.Length);
waitTime = startWaitTime;
}
else
{
waitTime -= Time.deltaTime;
}
}
}
}