|
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; |
|
} |
|
} |