File size: 2,720 Bytes
3497d64 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
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<Animator>();
//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;
}
} |