Question by
PaincideStudio · Feb 21, 2018 at 10:12 AM ·
coroutinestopstopcoroutine
Coroutine not stopping
Hi I will give you the code first.
public Transform sight;
public GameObject Player;
NavMeshAgent navMeshAgent;
NavMeshPath path;
public float timeForNewPath;
bool inCoRoutine;
Vector3 target;
bool validPath;
bool wandering;
public Animator anim;
void Start()
{
navMeshAgent = GetComponent<NavMeshAgent> ();
path = new NavMeshPath ();
navMeshAgent.speed = speedController.speedValue;
wandering = true;
}
void Update()
{
if (!inCoRoutine && wandering)
StartCoroutine (DoSomething ());
if (navMeshAgent.velocity.magnitude > 1.0f)
{
anim.SetBool ("IsWalking", true);
}
else
{
anim.SetBool ("IsWalking", false);
}
}
Vector3 getNewRandomPosition()
{
float x = Random.Range (-45, -5);
float y = Random.Range (0, 0.2f);
float z = Random.Range (-33, 25);
Vector3 pos = new Vector3 (x, 0, z);
return pos;
}
IEnumerator DoSomething()
{
inCoRoutine = true;
yield return new WaitForSeconds (timeForNewPath);
GetNewPath ();
validPath = navMeshAgent.CalculatePath (target,path);
while (!validPath)
{
yield return new WaitForSeconds (0.01f);
GetNewPath ();
validPath = navMeshAgent.CalculatePath (target,path);
}
inCoRoutine = false;
}
void GetNewPath()
{
target = getNewRandomPosition ();
navMeshAgent.SetDestination (target);
}
void OnTriggerStay()
{
inCoRoutine = false;
StopCoroutine (DoSomething ());
navMeshAgent.SetDestination (Player.transform.position);
wandering = false;
}
void OnTriggerExit()
{
StartCoroutine (DoSomething ());
wandering = true;
}
}
I made a trigger that will stop the Coroutine, but it keeps going on...
I used bool but it doesn't seems to work.
Help me!
Comment
Your answer
Follow this Question
Related Questions
Coroutine does not stop? 1 Answer
Can I check if this.gameObject was destroyed? 5 Answers
IEnumerator instead of LateUpdate in unity 1 Answer
Get IEnumerator parameters with StopCoroutine 1 Answer
StopCoroutine not working. 0 Answers