using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class AI_Movement : MonoBehaviour { Animator animator; public float moveSpeed = 0.2f; Vector3 stopPosition; float walkTime; public float walkCounter; float waitTime; public float waitCounter; int WalkDirection; public bool isWalking; // Start is called before the first frame update void Start() { animator = GetComponent(); //So that all the prefabs don't move/stop at the same time walkTime = Random.Range(3,6); waitTime = Random.Range(5,7); waitCounter = waitTime; walkCounter = walkTime; ChooseDirection(); } // Update is called once per frame void Update() { // Debug.Log("isWalking "+isWalking); if (isWalking) { animator.SetBool("isRunning", true); walkCounter -= Time.deltaTime; switch (WalkDirection) { case 0: transform.localRotation = Quaternion.Euler(0f, 0f, 0f); transform.position += transform.forward * moveSpeed * Time.deltaTime; break; case 1: transform.localRotation = Quaternion.Euler(0f, 90, 0f); transform.position += transform.forward * moveSpeed * Time.deltaTime; break; case 2: transform.localRotation = Quaternion.Euler(0f, -90, 0f); transform.position += transform.forward * moveSpeed * Time.deltaTime; break; case 3: transform.localRotation = Quaternion.Euler(0f, 180, 0f); transform.position += transform.forward * moveSpeed * Time.deltaTime; break; } if (walkCounter <= 0) { stopPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z); isWalking = false; //stop movement transform.position = stopPosition; animator.SetBool("isRunning", false); //reset the waitCounter waitCounter = waitTime; } } else { waitCounter -= Time.deltaTime; if (waitCounter <= 0) { ChooseDirection(); } } } public void ChooseDirection() { WalkDirection = Random.Range(0, 4); isWalking = true; walkCounter = walkTime; } }