56 lines
1.3 KiB
C#
56 lines
1.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.AI;
|
|
using System.Collections;
|
|
using static UnityEngine.GraphicsBuffer;
|
|
|
|
public class AI : MonoBehaviour
|
|
{
|
|
[SerializeField] private NavMeshAgent agent;
|
|
[SerializeField] private int waittime;
|
|
[SerializeField] public Transform[] targets;
|
|
private int currentTargetIndex;
|
|
private bool isWaiting;
|
|
|
|
|
|
|
|
private void Start()
|
|
{
|
|
targets = new Transform[3];
|
|
|
|
targets[0] = GameObject.Find("Cube (2)").transform;
|
|
targets[1] = GameObject.Find("Cube (3)").transform;
|
|
targets[2] = GameObject.Find("Cube (4)").transform;
|
|
|
|
if (targets.Length > 0)
|
|
{
|
|
currentTargetIndex = 0;
|
|
SetNextDestination();
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (!isWaiting && agent.remainingDistance <= agent.stoppingDistance && !agent.pathPending)
|
|
{
|
|
StartCoroutine(GoToNextTarget());
|
|
}
|
|
}
|
|
|
|
private void SetNextDestination()
|
|
{
|
|
if (targets.Length == 0)
|
|
return;
|
|
|
|
agent.SetDestination(targets[currentTargetIndex].position);
|
|
}
|
|
|
|
private IEnumerator GoToNextTarget()
|
|
{
|
|
isWaiting = true;
|
|
yield return new WaitForSeconds(waittime);
|
|
currentTargetIndex++;
|
|
SetNextDestination();
|
|
isWaiting = false;
|
|
}
|
|
}
|