using Koptilnya.StateMachine; using Mirror; using UnityEngine; namespace Characters.Enemy.States { public class ChaseState : State { private readonly Enemy _enemy; public ChaseState(Enemy enemy) : base(EnemyState.Chase) { _enemy = enemy; } [ServerCallback] public override void Enter() { _enemy.SetSpeedMul(1f); _enemy.SetAimRigWeight(1f); } [ServerCallback] public override void Update() { _enemy.agent.destination = _enemy.targetTransform.position; var distanceToTarget = _enemy.DistanceToTarget; if (distanceToTarget < _enemy.aggressionDistance) { _enemy.aimTransform.position = _enemy.targetTransform.position + _enemy.targetTransform.up * 1.2f; if (distanceToTarget < 1f) { _enemy.ChangeState(EnemyState.Attack); } } else { _enemy.ChangeState(EnemyState.Idle); } _enemy.targetTransform = _enemy.GetClosestTarget(); } [ServerCallback] public override void Exit() { _enemy.targetTransform = null; _enemy.SetAimRigWeight(0f); } } }