IEnumerator complexeAction(float delay, int typeCA) { Manoeuvre lastManoeuvre; Formation currFormation; int i, len; yield return(new WaitForSeconds(delay)); while (true) { playerShip = GameObject.FindGameObjectWithTag("Player"); switch (typeCA) { case 1: lastManoeuvre = PatternFactory.SpiralPattern(32, 1, 0.01f, transform.position); break; case 2: lastManoeuvre = PatternFactory.CirclePattern(32, 1, 0.1f, transform.position); break; case 3: lastManoeuvre = PatternFactory.HalfCirclePattern(32, 1, 1f, transform.position, playerShip.transform.position); break; default: lastManoeuvre = PatternFactory.QuarterCirclePattern(32, 1, 1f, transform.position, playerShip.transform.position); break; } lastManoeuvre.StartManoeuvre(); while ((currFormation = lastManoeuvre.GetNextFormation()) != null && currFormation.formation != null) { i = 0; len = currFormation.formation.Length; for (; i < len; ++i) { GameObject shot = arsenal.Fire(transform, fireType, gameObject.tag); SpecialMover spScrip = shot.GetComponent <SpecialMover> (); spScrip.SetTrajectory(currFormation.formation[i].GetClone()); } yield return(new WaitForSeconds(currFormation.timer)); } yield return(new WaitForSeconds(1f)); } }