- Home /
How to make Update wait for AI Decision?
I am making a 2D fighting game for a class, and I am having issues trying to achieve the affect that I want in Unity.
The affect I want to do is have the Update function wait X amount of time for my AI to decide what to do, after waiting the AI will fire off it's choice and I want the Update function to keep moving along like it was before it had to wait.
ex) I collide with the other player, and want to attack it. I need to wait X amount of time before firing off the attack command or else the AI will instantly win by firing off all the attack commands.
Is this possible? If so how?
I am using a state machine to figure out the AI logic (states are Attack, Evade, & Seek). The main function that calls the other state functions, doStateAction, is called initially by the Update function. I have tried using waitforseconds and startcoroutine, and I still can't seem to get them to do what I want... I have placed them in the individual state functions and in the update function to no avail.
Please help!
Answer by _joe_ · Mar 27, 2015 at 09:05 PM
You can't make an Update function wait. You will need to do all of this in a Coroutine.
When you collide with the other player, instead of calling your function, start a coroutine:
//OnCollision
StartCoroutine("AIAttack");
//And write this Coroutine function:
IEnumerator AIAttack(){
//Wait for 2 seconds before attacking
yield return new WaitForSeconds(2);
Attack ();
}
//The Attack function
void Attack(){
//Attack Code
}
Hope that helps!
Your answer
Follow this Question
Related Questions
WaitForSeconds in Update() function 4 Answers
WaitForSeconds problem with Unity Pro 3 Answers
Scrolling Text StartCoroutine not working C# 2 Answers
C# WaitForSeconds doesn't seem to work ?? 2 Answers
Setting position after respawn. 0 Answers