/
KasatkinGV
/
CourseWork
Обзор
Документация
Войти
/
KasatkinGV
/
CourseWork
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
EnemyController.cs
96 строк
2 KB
KasatkinGV
upload files
11 июн 2025, 01:05
11 июн 2025, 01:05
ea29c9d
Код
Авторство
О чём код?
using UnityEngine; public class EnemyController : MonoBehaviour { private enum State { Patrolling, Chasing, Attacking, Hit, Dead } private State currentState; [SerializeField] private Transform player; private EnemyPatrol patrol; private EnemyChase chase; private EnemyAttack attack; private EnemyHealth health; private void Awake() { patrol = GetComponent<EnemyPatrol>(); chase = GetComponent<EnemyChase>(); attack = GetComponent<EnemyAttack>(); health = GetComponent<EnemyHealth>(); } private void Start() { patrol.Initialize(); chase.Initialize(player); attack.Initialize(player); currentState = State.Patrolling; } private void FixedUpdate() { if (health.IsDead) { currentState = State.Dead; return; } HandleState(); } private void HandleState() { switch (currentState) { case State.Hit: if (!health.IsHit) { currentState = attack.IsPlayerInRange() ? State.Attacking : State.Chasing; } break; case State.Attacking: if (!attack.IsAttacking) { if (attack.IsPlayerInRange()) { attack.TryAttack(); } else { currentState = State.Chasing; } } break; case State.Chasing: if (attack.IsPlayerInRange()) { currentState = State.Attacking; } else if (chase.CanSeePlayer()) { chase.Chase(); } else { currentState = State.Patrolling; } break; case State.Patrolling: if (chase.CanSeePlayer()) { currentState = State.Chasing; } else { patrol.Patrol(); } break; } } }