// Update is called once per frame void Update() { if (Time.time > nextState) { state = ((state + 1) % 3); switch (state) { case 0: LeanPool.Destroy(transform.GetChild(0).gameObject); break; case 1: shootLaser(laserSight); break; case 2: LeanPool.Destroy(transform.GetChild(0).gameObject); shootLaser(laserBeam); // source.PlayOneShot (laserSound, 0.5f); break; } nextState = Time.time + 1 / stateLength[state]; } }