- Home /
Can someone help me with Programming Delays?
Okay well, I have been trying different things for a while now because nothing seems to work.(C# of course) I have been using WaitForSeconds but it just doesn't work. What I am trying to do is on return disable a script, but this script also uses return to do play an animation, but I want it so you can only press it once to only be able to play the animation once. So since they use the same keycode to toggle it, it does successfully disable the code, but doesn't play the animation(of course). So I thought that I could just make it so it has a small delay before disabling the animation. Is there an easier way to make the script only work once? but then being able to toggle back on after a certain amount of time? Or would it be best to use this "delay" method? Also Here is the code I have for delay that doesn't work.
void Start () {
}
// Update is called once per frame
void Update () {
if(Input.GetKeyUp (KeyCode.Return)){
StartCoroutine (Wait());
GetComponent<rotationScript>().enabled = false;
}
}
IEnumerator Wait(){
yield return new WaitForSeconds(10f);
}
}
Regards, ~Connor
You just use "Invoke".
It is the most basic and most commonly-used command in all of video game program$$anonymous$$g.
Unless you're an expert or a systems programmer never touch coroutines or yield, etc etc for any reason.
It's just an ordinary Invoke command. $$anonymous$$uch of video game code is just 100s and 100s of lines of Invoke commands (or the equivalent commands in different systems), to make things start or end at different times.
It's a great pity that Unity even mention yield, etc in the docs as it is hugely confusing to new users.
Answer by OperationDogBird · Aug 05, 2012 at 01:54 AM
Good use for a boolean
void Start ()
{
bool clicked;
}
void Update ()
{
if(!clicked)
{
if(Input.GetKeyUp (KeyCode.Return))
{
clicked=true;
StartCoroutine (Wait());
GetComponent<rotationScript>().enabled = false;
}
}
}
The bool makes this section run only once.
I figured it out, What I did was just moved everything into the IEnumerator part except for the start coroutine and it worked fine. Wow am I a noob facepalm
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
check alpha of gameObject C# 3 Answers
adding a delay to shooting 2 Answers