| | 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; |
| | |
| | |
| | void Start() |
| | { |
| | animator = GetComponent<Animator>(); |
| | |
| | |
| | walkTime = Random.Range(3,6); |
| | waitTime = Random.Range(5,7); |
| | |
| | |
| | waitCounter = waitTime; |
| | walkCounter = walkTime; |
| | |
| | ChooseDirection(); |
| | } |
| | |
| | |
| | void Update() |
| | { |
| | |
| | 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; |
| | |
| | transform.position = stopPosition; |
| | animator.SetBool("isRunning", false); |
| | |
| | waitCounter = waitTime; |
| | } |
| | |
| | |
| | } |
| | else |
| | { |
| | |
| | waitCounter -= Time.deltaTime; |
| | |
| | if (waitCounter <= 0) |
| | { |
| | ChooseDirection(); |
| | } |
| | } |
| | } |
| | |
| | |
| | public void ChooseDirection() |
| | { |
| | WalkDirection = Random.Range(0, 4); |
| | |
| | isWalking = true; |
| | walkCounter = walkTime; |
| | } |
| | } |