@SushkaCraftHabr

Почему не стартует корутина?

Имеется скрипт. Он должен вызывать корутину, чтобы враг двигался к игроку, но почему-то этого не происходит.
Вот скрипт -
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class EnemyController : MonoBehaviour
{

    public NavMeshAgent agent;

    private Transform player;
    private int agentActive = 0;
    
    void Start () 
    {
        player = GameObject.FindGameObjectWithTag("Player").transform; 
    }

    void OnTriggerStay(Collider other){
        if (other.tag == "Player"){
            agentActive = 0;
        }
        else agentActive = 1;
    }
    
    void FixedUpdate(){
        if(agentActive == 1){
            StartCoroutine(findPath());
        }
        else StopCoroutine(findPath());
    }

    IEnumerator findPath()
    {
        while(true)
        {
            if(player != null)
            {
                agent.SetDestination(player.position);
                yield return new WaitForSeconds(0.05f);
            }
            else break;
        }
    }
}

Пробовал реализовывать код по разному, но постоянно одно и тоже. Почему так получается?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
PragmaGames
@PragmaGames
Увлекаюсь Unity.
Ты каждый FixedUpdate() стартуешь карутину, не делай так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы