Пример #1
0
        //初始化AI
        private void InitAi(BNPC npc)
        {
            //如果是npc刷新点
            if (npc.data.num == NpcMgr <ServerNPC> .FRESH_NPC)
            {
                #if NO_SOLDIER
                #else
                BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                if (tree == null)
                {
                    tree = npc.gameObject.AddComponent <BehaviorTree>();
                }

                tree.ExternalBehavior    = AiLoader.load(AILoader.NPC_FRESH);
                tree.StartWhenEnabled    = true;
                tree.RestartWhenComplete = false;
                #endif
            }
            else
            {
                NPCAIType type = (NPCAIType)npc.dataInScene.AIType;
                switch (type)
                {
                case NPCAIType.Pathfind_Atk:
                {
                    BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                    if (tree == null)
                    {
                        tree = npc.gameObject.AddComponent <BehaviorTree>();
                    }

                    tree.ExternalBehavior    = AiLoader.load(AILoader.PATHFIND_ATK);
                    tree.StartWhenEnabled    = true;
                    tree.RestartWhenComplete = true;
                    break;
                }

                case NPCAIType.Simple_PfAtk:
                {
                    BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                    if (tree == null)
                    {
                        tree = npc.gameObject.AddComponent <BehaviorTree>();
                    }

                    tree.ExternalBehavior    = AiLoader.load(AILoader.SIMPLE_PFATK);
                    tree.StartWhenEnabled    = true;
                    tree.RestartWhenComplete = true;
                    break;
                }

                case NPCAIType.Patrol:
                {
                    BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                    if (tree == null)
                    {
                        tree = npc.gameObject.AddComponent <BehaviorTree>();
                    }

                    tree.ExternalBehavior    = AiLoader.load(AILoader.NORMAL_ATTACK);
                    tree.StartWhenEnabled    = true;
                    tree.RestartWhenComplete = true;
                    break;
                }
                }
            }
        }
Пример #2
0
        void AttachAI(ServerNPC npc, int ai)
        {
            ServerLifeNpc lifeNpc = npc as ServerLifeNpc;

            if (lifeNpc == null)
            {
                return;
            }
            lifeNpc.data.btData     = new NPCBattleData();
            lifeNpc.data.btData.way = BATTLE_WAY.None;
            AILoader  AiLoader = Core.ResEng.getLoader <AILoader>();
            NPCAIType type     = (NPCAIType)ai;

            switch (type)
            {
            case NPCAIType.Pathfind_Atk:
            {
                BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                if (tree == null)
                {
                    tree = npc.gameObject.AddComponent <BehaviorTree>();
                }

                tree.ExternalBehavior    = AiLoader.load(AILoader.PATHFIND_ATK);
                tree.StartWhenEnabled    = true;
                tree.RestartWhenComplete = true;
                lifeNpc.AutoAiTree       = tree;
            }
            break;

            case NPCAIType.Simple_PfAtk:
            {
                BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                if (tree == null)
                {
                    tree = npc.gameObject.AddComponent <BehaviorTree>();
                }

                tree.ExternalBehavior    = AiLoader.load(AILoader.SIMPLE_PFATK);
                tree.StartWhenEnabled    = true;
                tree.RestartWhenComplete = true;
                lifeNpc.AutoAiTree       = tree;
            }
            break;

            case NPCAIType.Patrol:
            {
                BehaviorTree tree = npc.gameObject.GetComponent <BehaviorTree> ();
                if (tree == null)
                {
                    tree = npc.gameObject.AddComponent <BehaviorTree>();
                }

                tree.ExternalBehavior    = AiLoader.load(AILoader.NORMAL_ATTACK);
                tree.StartWhenEnabled    = true;
                tree.RestartWhenComplete = true;
                lifeNpc.AutoAiTree       = tree;
            }
            break;
            }
        }