IEnumerator Kongxi(AirWave wave) { yield return(new WaitForSeconds(wave.firstTime)); float waveInterval = Random.Range(wave.waveInterval[0], wave.waveInterval[1]); while (true) { int count = Random.Range(wave.crowNum[0], wave.crowNum[1] + 1); bool isToRight = Random.value <= 0.5f; FightGroup targetGroup = isToRight ? (FightGroup)FightManager.GetInstance().enemyGroup : (FightGroup)FightManager.GetInstance().mineGroup; while (targetGroup.fightUnits.Count == 0) { yield return(null); } Vector3 from, to; if (isToRight) { from = left.localPosition; to = right.localPosition; } else { to = left.localPosition; from = right.localPosition; } for (int i = 0; i < count; i++) { GameObject obj = Instantiate(wuya) as GameObject; obj.transform.parent = transform; obj.transform.localScale = Vector3.one; if (isToRight) { obj.transform.localRotation = Quaternion.Euler(0, 180, 0); } obj.SetActive(true); KongxiWuya kongxiWuya = obj.GetComponent <KongxiWuya>(); Vector3 target = GetOneTarget(targetGroup); kongxiWuya.from = from; kongxiWuya.to = to; kongxiWuya.target = target; kongxiWuya.speed = 100f; yield return(new WaitForSeconds(wave.interval)); } yield return(new WaitForSeconds(waveInterval)); } }
public void Init(string config) { index = -1; JsonData dt = JsonMapper.ToObject(config); for (int i = 0; i < dt.Count; i++) { JsonData waveDt = dt[i]; if (waveDt != null && waveDt.Count > 0) { AirWave w = new AirWave(); w.firstTime = float.Parse(waveDt[0].ToString()); JsonData waveInterval = waveDt[1]; w.waveInterval = new float[2] { float.Parse(waveInterval[0].ToString()), float.Parse(waveInterval[1].ToString()) }; w.interval = float.Parse(waveDt[2].ToString()); JsonData crowID = waveDt[3]; w.crowID = new int[crowID.Count]; for (int j = 0; j < crowID.Count; j++) { w.crowID[j] = (int)crowID[j]; } JsonData crowNum = waveDt[4]; w.crowNum = new int[2] { int.Parse(crowNum[0].ToString()), int.Parse(crowNum[0].ToString()) }; waves.Add(w); } else { waves.Add(null); } } StartKongxi(null); }