Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class AI_Movement : MonoBehaviour
- {
- Animator animator;
- public float moveSpeed = 0.2f; // Speed moving forward
- Vector3 stopPosition;
- float walkTime; //How long they will walk for
- public float walkCounter; //Distance traveled to determine new wait position
- float waitTime; //how long to wait
- public float waitCounter; //new start position
- 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()
- {
- 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;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement