Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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;
        }