- Home /
Question by
youngexplorer · Nov 02, 2014 at 06:45 AM ·
invokenotsecondswork
Invoke doesn't work when with certain second
I am trying to create an effect like this: - When zomebie touch a note, he speed up for 3 second then return to normal speed. The structure is this: - Zombie touch note, set bool isSpeedUp to true - Call speedup function - Increase speed in SpeedUp function - Invoke SpeedDown after 3 second - Decrease speed in SpeedDown - Set isSpeedUp to false
My problem is when I use invoke, 0.5s works fine (I can see the log that it call all functions and change variables properly) but with 1 second it does not call to SpeedDown function. I am desperate. I am new, so any help would be appreciated.
P/S: I tried waittoseconds but it doesn't work. I would prefer Invoke to work because it's cleaner.
using UnityEngine; using System.Collections;
public class NoteController : MonoBehaviour
{
private bool isSpeedUp = false;
private float timeSpeedUp = 5f;
public float defaultTimeSpeedUp = 5f;
private float DefaultMoveSpeed;
private float DefaultTurnSpeed;
private float starttimer = 0f;
public void ZombieTouch ()
{
Transform goldnote = transform.GetChild (0);
goldnote.collider2D.enabled = false;
goldnote.GetComponent<Animator> ().SetBool ("CollectNote", true);
isSpeedUp = true;
DefaultMoveSpeed = Common.ZombiemoveSpeed;
DefaultTurnSpeed = Common.ZombieturnSpeed;
Debug.Log ("Zombie Speed -1 " + Common.ZombiemoveSpeed);
SpeedUp2 ();
}
void Start ()
{
}
void SpeedUp2 ()
{
Debug.Log ("Zombie Speed0 " + Common.ZombiemoveSpeed);
Common.ZombiemoveSpeed = DefaultMoveSpeed + 2;
Common.ZombieturnSpeed = DefaultTurnSpeed + 2;
Debug.Log ("Zombie Speed1 " + Common.ZombiemoveSpeed);
Invoke ("SpeedDown", timeSpeedUp);
Debug.Log ("Invoke striked");
}
void SpeedDown ()
{
Debug.Log ("Speed down called");
Common.ZombiemoveSpeed = Common.defaultMoveSpeed;
Common.ZombieturnSpeed = Common.defaultTurnSpeed;
Debug.Log ("Zombie Speed2 " + Common.ZombiemoveSpeed);
isSpeedUp = false;
}
void Update ()
{
}
}
Comment