Задать вопрос
@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;
        }
    }
}

Пробовал реализовывать код по разному, но постоянно одно и тоже. Почему так получается?
  • Вопрос задан
  • 99 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 1
PragmaGames
@PragmaGames
Увлекаюсь Unity.
Ты каждый FixedUpdate() стартуешь карутину, не делай так.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы