using UnityEngine; using UnityEngine.AI; using System.Collections; public class PirateIdle : PirateBehavior { [Header("Тайминги")] public float waitDuration = 2f; // время ожидания после прихода private bool isReturning = false; public override void Activate() { enabled = true; isReturning = true; if (pirate.agent != null) { pirate.agent.SetDestination(pirate.HomePosition); pirate.agent.isStopped = false; // включаем анимацию ходьбы if (Animator != null) { Animator.Play("Idle"); Animator.SetBool("isWalking", true); } } } public override void Deactivate(bool interrupted = false) { StopAllCoroutines(); enabled = false; isReturning = false; if (Animator != null) Animator.SetBool("isWalking", false); pirate.ClearCurrentBehavior(this, interrupted); } void Update() { if (!isReturning || pirate.agent == null) return; // проверка, дошли ли до точки if (!pirate.agent.pathPending && pirate.agent.remainingDistance <= pirate.agent.stoppingDistance) { pirate.agent.isStopped = true; if (Animator != null) Animator.SetBool("isWalking", false); isReturning = false; // можно подождать небольшое время StartCoroutine(WaitCoroutine()); } } private IEnumerator WaitCoroutine() { yield return new WaitForSeconds(waitDuration); Deactivate(true); // после ожидания поведение завершается } }