void InitData() { if (!WarServerManager.Instance.bInit) { return; } CAMP camp = CAMP.Neutral; if (npc.Camp == CAMP.Enemy) { camp = CAMP.Player; } else if (npc.Camp == CAMP.Player) { camp = CAMP.Enemy; } //得到敌方阵营的所有目标点 if (camp != CAMP.Neutral) { tempList.Clear(); sortList.Clear(); targets.Clear(); tempList = WarServerManager.Instance.npcMgr.GetBuildByWay(camp, npc.data.btData.way); for (int i = 0; i < tempList.Count; i++) { sortList.Add(tempList [i].dataInScene.index, tempList [i]); } foreach (KeyValuePair <int, ServerLifeNpc> itor in sortList) { targets.Add(itor.Value); } NeHeQiaoNpcMgr npcMgr = WarServerManager.Instance.npcMgr as NeHeQiaoNpcMgr; if (camp == CAMP.Player) { targets.Add(npcMgr.SelfMilitaryBase); } else if (camp == CAMP.Enemy) { targets.Add(npcMgr.EnemyMilitaryBase); } } if (targets != null && targets.Count > 0 && index.Value < targets.Count) { mTargetTrans = targets [index.Value].transform; } bInitFinish = true; }
private void SelTarget() { NeHeQiaoNpcMgr npcMgr = WarServerManager.Instance.npcMgr as NeHeQiaoNpcMgr; //自家泉水 if (myHero.Camp == CAMP.Player && npcMgr.SelfSpring != null) { npcList.Add(npcMgr.SelfSpring); } else if (myHero.Camp == CAMP.Enemy && npcMgr.EnemySpring != null) { npcList.Add(npcMgr.EnemySpring); } //公共泉水 if (npcMgr.NeutralSpring != null) { npcList.Add(npcMgr.NeutralSpring); } //所有道具 List <ServerNPC> allProp = WarServerManager.Instance.npcMgr.GetNPCByType(LifeNPCType.Prop, CAMP.None); if (allProp != null && allProp.Count > 0) { npcList.AddRange(allProp.ToArray()); } //得到距离自己最近的 ServerNPC npcTarget = null; if (npcList.Count > 0) { float minDis = Mathf.Infinity; for (int i = 0; i < npcList.Count; i++) { float distance = AITools.GetSqrDis(this.transform.position, npcList [i].transform.position); if (distance < minDis) { minDis = distance; npcTarget = npcList [i]; } } } target.Value = npcTarget; mTrans = myHero.transform; mTargetTrans = target.Value.transform; }