diff --git a/AI.cs b/AI.cs new file mode 100644 index 0000000..4b50c0e --- /dev/null +++ b/AI.cs @@ -0,0 +1,55 @@ +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; + } +} diff --git a/Create.cs b/Create.cs new file mode 100644 index 0000000..6463220 --- /dev/null +++ b/Create.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Create : MonoBehaviour +{ + public GameObject[] objectToSpawn; + public int z,y; + + // Start is called before the first frame update + void Start() + { + int rand = UnityEngine.Random.Range(0, objectToSpawn.Length); + Instantiate(objectToSpawn[rand], new Vector3(y,0,z), Quaternion.identity); + } +}