private void Update() { if (!Health.Alive) { return; } float distanceToPlayer = Vector3.Distance(transform.position, player.transform.position); var playerInRange = weaponSystem.IsInRange(player.transform.position); if (OutOfCombat && distanceToPlayer <= chaseRadius) { if (patrolCoroutine != null) { StopCoroutine(patrolCoroutine); patrolCoroutine = null; } character.AnimatorForwardMultiplier = 1f; state = States.Chasing; character.SetTarget(player.transform); return; } if (state == States.Chasing && playerInRange && player.Health.Alive) { state = States.Attacking; weaponSystem.StartAttacking(player.Health); return; } if (state == States.Attacking && !playerInRange || state == States.Attacking && !player.Health.Alive) { state = States.Chasing; weaponSystem.StopAttacking(); return; } if (state == States.Chasing && distanceToPlayer > chaseRadius) { TransitionOutOfCombat(); return; } if (state == States.Patroling) { Patrol(); return; } }