/// <summary> /// 查找最近的目标 /// </summary> private void FindTargetForEnemy(BattleAgent hero) { List <BattleAgent> list = BattleManager.SharedInstance.GetEnemyList(); List <float> disList = new List <float> (); for (int i = 0; i < list.Count; i++) { float dis = Vector2.Distance(hero.MapPos, list [i].MapPos); disList.Add(dis); } float min = Mathf.Min(disList.ToArray()); for (int j = 0; j < disList.Count; j++) { if (min == disList [j]) { hero.AddTarget(list [j]); } } }
/// <summary> /// 切换地图 /// </summary> /// <returns>The map.</returns> IEnumerator ChangeMap() { //隐藏大招按钮 GameObject.Find("btnOD").SetActive(false); // GameObject.Find ("btnLE").SetActive (false); // GameObject.Find ("btnRR").SetActive (false); for (int i = 0; i < enemyList.Count; i++) { enemyList [i].IsReady = false; enemyList [i].BaseSoldier.OnIdle(); } for (int i = 0; i < soldierList.Count; i++) { soldierList [i].IsReady = false; soldierList [i].BaseSoldier.OnIdle(); } // soldierList [0].IsReady = false; // soldierList [1].IsReady = false; // soldierList [4].IsReady = false; //阿莫说话 GameObject parent = StageManager.SharedInstance.EffectLayer; GameObject popo2Prefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [24].Prefab); GameObject popo2 = StageManager.SharedInstance.AddToStage(parent, popo2Prefab); Popo txt2 = popo2.AddComponent <Popo> (); txt2.transform.position = MapUtil.GetInstance.MapToWorld(enemyList [2].MapPos.x, enemyList [2].MapPos.y); txt2.SetText("小的们顶住!我妈妈喊我回家吃饭!"); yield return(new WaitForSeconds(2.0f)); Destroy(popo2); //am上天 BattleAgent amAgent = enemyList [2]; amAgent.BaseSprite.AddBlackDownEffect(); amAgent.BaseSprite.gameObject.SetActive(false); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(1.0f)); //mx hm一起上天 BattleAgent hmAgent = soldierList [2]; hmAgent.BaseSprite.AddDownEffect(); hmAgent.BaseSprite.gameObject.SetActive(false); BattleAgent mxAgent = soldierList [1]; mxAgent.BaseSprite.AddDownEffect(); mxAgent.BaseSprite.gameObject.SetActive(false); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); //yield return new WaitForSeconds (0.5f); //AudioManager.SharedInstance.PlaySound ("Bgmusic_02", 1.0f); //变换背景 GameObject slashLayer = StageManager.SharedInstance.SlashLayer; GameObject whitePrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [26].Prefab); GameObject white = StageManager.SharedInstance.AddToStage(slashLayer, whitePrefab); Image img = white.GetComponent <Image> (); Color c = new Color(img.color.r, img.color.g, img.color.b, 0); img.color = c; Hashtable args2 = new Hashtable(); args2.Add("time", 0.5f); args2.Add("alpha", 1.0f); iTween.FadeTo(white, args2); yield return(new WaitForSeconds(0.5f)); mxAgent.BaseSprite.gameObject.SetActive(true); hmAgent.BaseSprite.gameObject.SetActive(true); amAgent.BaseSprite.gameObject.SetActive(true); mxAgent.ClearTarget(); mxAgent.AddTarget(amAgent); hmAgent.ClearTarget(); hmAgent.AddTarget(amAgent); amAgent.ClearTarget(); amAgent.AddTarget(hmAgent); //重新设定新位置 mxAgent.BaseSprite.SetMapPosition(3, 2); hmAgent.BaseSprite.SetMapPosition(10, 8); amAgent.BaseSprite.SetMapPosition(6, 6); mxAgent.BaseSprite.gameObject.SetActive(false); hmAgent.BaseSprite.gameObject.SetActive(false); amAgent.BaseSprite.gameObject.SetActive(false); //移除不要的角色 List <BattleAgent> list1 = new List <BattleAgent> (); for (int i = 0; i < enemyList.Count; i++) { if (enemyList [i] == amAgent) { continue; } list1.Add(enemyList [i]); } for (int i = 0; i < list1.Count; i++) { RemoveEnemy(list1 [i]); } List <BattleAgent> list2 = new List <BattleAgent> (); for (int i = 0; i < soldierList.Count; i++) { if (soldierList [i] == hmAgent) { continue; } if (soldierList [i] == mxAgent) { continue; } list2.Add(soldierList [i]); } for (int i = 0; i < list2.Count; i++) { RemoveSoldier(list2 [i]); } yield return(new WaitForSeconds(1f)); GameObject bg2 = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [28].Prefab); StageManager.SharedInstance.ChangeBg(bg2); Hashtable args3 = new Hashtable(); args3.Add("time", 1f); args3.Add("alpha", 0); iTween.FadeTo(white, args3); yield return(new WaitForSeconds(0.5f)); Destroy(white); //重新落位 mxAgent.BaseSprite.AddDownEffect(); mxAgent.BaseSprite.gameObject.SetActive(true); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.1f)); hmAgent.BaseSprite.AddDownEffect(); hmAgent.BaseSprite.gameObject.SetActive(true); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.1f)); amAgent.BaseSprite.AddBlackDownEffect(); amAgent.BaseSprite.gameObject.SetActive(true); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); mxAgent.IsReady = true; hmAgent.IsReady = true; amAgent.IsReady = true; }
/// <summary> /// 查找最近的目标 /// </summary> private void FindTargetForHero(BattleAgent hero) { List<BattleAgent> list = BattleManager.SharedInstance.GetEnemyList (); List<float> disList = new List<float> (); for (int i = 0; i < list.Count; i++) { float dis = Vector2.Distance (hero.MapPos, list [i].MapPos); disList.Add (dis); } float min = Mathf.Min (disList.ToArray ()); for (int j = 0; j < disList.Count; j++) { if (min == disList [j]) { hero.AddTarget (list [j]); } } }
IEnumerator AddOD() { yield return(new WaitForSeconds(0.2f)); //奥丁 GameObject parent = StageManager.SharedInstance.HeroLayer; GameObject odPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [12].Prefab); GameObject od = StageManager.SharedInstance.AddToStage(parent, odPrefab); od.name = "od"; BaseSoldier odSoldier = od.AddComponent <ODSoldier> (); BattleAgent odAgent = new BattleAgent(odSoldier, TestData.charDB [12]); odAgent.BaseSprite.SetMapPosition(soldierPos [0].x, soldierPos [0].y); odAgent.BaseSprite.AddDownEffect(); soldierList.Add(odAgent); agentDict.Add(od.name, odAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.2f)); //绿萼 // GameObject lePrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [13].Prefab); // GameObject le = StageManager.SharedInstance.AddToStage (parent, lePrefab); // le.name = "le"; // BaseSoldier leSoldier = le.AddComponent<LESoldier> (); // BattleAgent leAgent = new BattleAgent (leSoldier, TestData.charDB [13]); // leAgent.BaseSprite.SetMapPosition (soldierPos [1].x, soldierPos [1].y); // // leAgent.BaseSprite.AddDownEffect (); // soldierList.Add (leAgent); // agentDict.Add (le.name, leAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // yield return new WaitForSeconds (0.2f); //慕雪 GameObject mxPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [14].Prefab); GameObject mx = StageManager.SharedInstance.AddToStage(parent, mxPrefab); mx.name = "mx"; BaseSoldier mxSoldier = mx.AddComponent <MXSoldier> (); BattleAgent mxAgent = new BattleAgent(mxSoldier, TestData.charDB [14]); mxAgent.BaseSprite.SetMapPosition(soldierPos [1].x, soldierPos [1].y); mxAgent.BaseSprite.AddDownEffect(); soldierList.Add(mxAgent); agentDict.Add(mx.name, mxAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.2f)); //寒梦 GameObject hmPrefab = ResourceManager.GetInstance.LoadPrefab(TestData.charDB [15].Prefab); GameObject hm = StageManager.SharedInstance.AddToStage(parent, hmPrefab); hm.name = "hm"; BaseSoldier hmSoldier = hm.AddComponent <HMSoldier> (); BattleAgent hmAgent = new BattleAgent(hmSoldier, TestData.charDB [15]); hmAgent.BaseSprite.SetMapPosition(soldierPos [2].x, soldierPos [2].y); hmAgent.BaseSprite.AddDownEffect(); soldierList.Add(hmAgent); agentDict.Add(hm.name, hmAgent); AudioManager.SharedInstance.PlayOneShot("fly", 1.0f); yield return(new WaitForSeconds(0.3f)); //蓉蓉 // GameObject rrPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [16].Prefab); // GameObject rr = StageManager.SharedInstance.AddToStage (parent, rrPrefab); // rr.name = "rr"; // BaseSoldier rrSoldier = rr.AddComponent<RRSoldier> (); // BattleAgent rrAgent = new BattleAgent (rrSoldier, TestData.charDB [16]); // // rrAgent.BaseSprite.SetMapPosition (soldierPos [4].x, soldierPos [4].y); // rrAgent.BaseSprite.AddDownEffect (); // soldierList.Add (rrAgent); // agentDict.Add (rr.name, rrAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // FindTargetForHero (odAgent); // soldierList [0].AddTarget (enemyList [0]); // soldierList [1].AddTarget (enemyList [0]); // soldierList [2].AddTarget (enemyList [0]); // soldierList [3].AddTarget (enemyList [0]); // soldierList [4].AddTarget (enemyList [0]); //enemyList [0].AddTarget (rrAgent); //enemyList [0].AddTarget (odAgent); enemyList [0].AddTarget(odAgent); enemyList [1].AddTarget(mxAgent); enemyList [2].AddTarget(hmAgent); odAgent.AddTarget(enemyList [0]); mxAgent.AddTarget(enemyList [1]); hmAgent.AddTarget(enemyList [2]); //leAgent.AddTarget (enemyList [1]); //rrAgent.AddTarget (enemyList [0]); // hmAgent.IsReady = true; // enemyList [4].IsReady = true; // enemyList[4].IsReady = true; // mxAgent.IsReady = true; // leAgent.IsReady = true; // enemyList[1].IsReady = true; // rrAgent.IsReady = true; // enemyList[0].IsReady = true; // for (int i = 0; i < soldierList.Count; i++) { // soldierList [i].IsReady = true; // } // // for (int i = 0; i < enemyList.Count; i++) { // enemyList [i].IsReady = true; // } }
IEnumerator AddOD() { yield return new WaitForSeconds (0.2f); //奥丁 GameObject parent = StageManager.SharedInstance.HeroLayer; GameObject odPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [12].Prefab); GameObject od = StageManager.SharedInstance.AddToStage (parent, odPrefab); od.name = "od"; BaseSoldier odSoldier = od.AddComponent<ODSoldier> (); BattleAgent odAgent = new BattleAgent (odSoldier, TestData.charDB [12]); odAgent.BaseSprite.SetMapPosition (soldierPos [0].x, soldierPos [0].y); odAgent.BaseSprite.AddDownEffect (); soldierList.Add (odAgent); agentDict.Add (od.name, odAgent); AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); yield return new WaitForSeconds (0.2f); //绿萼 // GameObject lePrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [13].Prefab); // GameObject le = StageManager.SharedInstance.AddToStage (parent, lePrefab); // le.name = "le"; // BaseSoldier leSoldier = le.AddComponent<LESoldier> (); // BattleAgent leAgent = new BattleAgent (leSoldier, TestData.charDB [13]); // leAgent.BaseSprite.SetMapPosition (soldierPos [1].x, soldierPos [1].y); // // leAgent.BaseSprite.AddDownEffect (); // soldierList.Add (leAgent); // agentDict.Add (le.name, leAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // yield return new WaitForSeconds (0.2f); //慕雪 GameObject mxPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [14].Prefab); GameObject mx = StageManager.SharedInstance.AddToStage (parent, mxPrefab); mx.name = "mx"; BaseSoldier mxSoldier = mx.AddComponent<MXSoldier> (); BattleAgent mxAgent = new BattleAgent (mxSoldier, TestData.charDB [14]); mxAgent.BaseSprite.SetMapPosition (soldierPos [1].x, soldierPos [1].y); mxAgent.BaseSprite.AddDownEffect (); soldierList.Add (mxAgent); agentDict.Add (mx.name, mxAgent); AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); yield return new WaitForSeconds (0.2f); //寒梦 GameObject hmPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [15].Prefab); GameObject hm = StageManager.SharedInstance.AddToStage (parent, hmPrefab); hm.name = "hm"; BaseSoldier hmSoldier = hm.AddComponent<HMSoldier> (); BattleAgent hmAgent = new BattleAgent (hmSoldier, TestData.charDB [15]); hmAgent.BaseSprite.SetMapPosition (soldierPos [2].x, soldierPos [2].y); hmAgent.BaseSprite.AddDownEffect (); soldierList.Add (hmAgent); agentDict.Add (hm.name, hmAgent); AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); yield return new WaitForSeconds (0.3f); //蓉蓉 // GameObject rrPrefab = ResourceManager.GetInstance.LoadPrefab (TestData.charDB [16].Prefab); // GameObject rr = StageManager.SharedInstance.AddToStage (parent, rrPrefab); // rr.name = "rr"; // BaseSoldier rrSoldier = rr.AddComponent<RRSoldier> (); // BattleAgent rrAgent = new BattleAgent (rrSoldier, TestData.charDB [16]); // // rrAgent.BaseSprite.SetMapPosition (soldierPos [4].x, soldierPos [4].y); // rrAgent.BaseSprite.AddDownEffect (); // soldierList.Add (rrAgent); // agentDict.Add (rr.name, rrAgent); // AudioManager.SharedInstance.PlayOneShot ("fly", 1.0f); // FindTargetForHero (odAgent); // soldierList [0].AddTarget (enemyList [0]); // soldierList [1].AddTarget (enemyList [0]); // soldierList [2].AddTarget (enemyList [0]); // soldierList [3].AddTarget (enemyList [0]); // soldierList [4].AddTarget (enemyList [0]); //enemyList [0].AddTarget (rrAgent); //enemyList [0].AddTarget (odAgent); enemyList [0].AddTarget (odAgent); enemyList [1].AddTarget (mxAgent); enemyList [2].AddTarget (hmAgent); odAgent.AddTarget (enemyList [0]); mxAgent.AddTarget (enemyList [1]); hmAgent.AddTarget (enemyList [2]); //leAgent.AddTarget (enemyList [1]); //rrAgent.AddTarget (enemyList [0]); // hmAgent.IsReady = true; // enemyList [4].IsReady = true; // enemyList[4].IsReady = true; // mxAgent.IsReady = true; // leAgent.IsReady = true; // enemyList[1].IsReady = true; // rrAgent.IsReady = true; // enemyList[0].IsReady = true; // for (int i = 0; i < soldierList.Count; i++) { // soldierList [i].IsReady = true; // } // // for (int i = 0; i < enemyList.Count; i++) { // enemyList [i].IsReady = true; // } }