Exemple #1
0
        //直接使用技能不切换状态
        public static SkillStateMachine UseSkill(NpcAttribute attacker)
        {
            var activeSkill       = attacker.GetComponent <SkillInfoComponent>().GetActiveSkill();
            var skillStateMachine = SkillLogic.CreateSkillStateMachine(attacker.gameObject, activeSkill.skillData, attacker.transform.position);

            return(skillStateMachine);
        }
Exemple #2
0
 public int GetLocalId()
 {
     return(attribute.GetComponent <KBEngine.KBNetworkView>().GetLocalId());
 }
        /*
         * public void CreateNpc(UnitData unitData, GameObject spawn)
         * {
         *  if (WorldManager.worldManager.station == WorldManager.WorldStation.Enter)
         *  {
         *      var Resource = Resources.Load<GameObject>(unitData.ModelName);
         *      GameObject g = Instantiate(Resource) as GameObject;
         *      if (g.GetComponent<CharacterController>() == null)
         *      {
         *          var c = g.AddComponent<CharacterController>();
         *          c.center = new Vector3(0, 0.7f, 0);
         *          c.height = 1.6f;
         *      }
         *
         *      NpcAttribute npc = NGUITools.AddMissingComponent<NpcAttribute>(g);
         *
         *      var type = Type.GetType("MyLib." + unitData.AITemplate);
         *      var t = typeof(NGUITools);
         *      var m = t.GetMethod("AddMissingComponent");
         *      Log.AI("Monster Create Certain AI  " + unitData.AITemplate + " " + type);
         *      var geMethod = m.MakeGenericMethod(type);
         *      geMethod.Invoke(null, new object[]{ g });// as AIBase;
         *
         *      g.transform.parent = transform;
         *      g.tag = GameTag.Npc; //Player Or Npc
         *      g.layer = (int)GameLayer.IgnoreCollision;
         *
         *      //Register Unique Id To Npc
         *      var netView = g.GetComponent<KBEngine.KBNetworkView>();
         *      netView.SetServerID(Util.NotInitServerID);
         *      netView.IsPlayer = false;
         *
         *      npc.SetObjUnitData(unitData);
         *      AddObject(netView.GetServerID(), netView);
         *
         *      npc.transform.position = spawn.transform.position;
         *      var rotY = spawn.transform.localRotation.eulerAngles.y;
         *      npc.transform.localRotation = Quaternion.Euler(new Vector3(0, rotY, 0));
         *
         *      NpcManager.Instance.RegNpc(unitData.name, g);
         *  } else
         *  {
         *      cacheNpc.Add(new MonsterInit(unitData, spawn));
         *  }
         * }
         */

        /// <summary>
        /// 伤害区域
        /// Moba中的移动小兵
        /// </summary>
        /// <param name="unitData"></param>
        /// <param name="spawn"></param>
        /// <param name="info"></param>
        public void CreateSpawnZoneEntity(UnitData unitData, SpawnZone spawn, EntityInfo info)
        {
            Log.Sys("CreateSpawnZoneEntity: " + unitData + spawn + " info " + info);
            //TODO: 这里可能有BUG
            if (info != null)
            {
                var oldMon = ObjectManager.objectManager.GetPlayer(info.Id);
                if (oldMon != null)
                {
                    var nv = oldMon.GetComponent <KBEngine.KBNetworkView>();
                    if (nv != null)
                    {
                        ObjectManager.objectManager.DestroyByLocalId(nv.GetLocalId());
                    }
                }
            }

            var          Resource = Resources.Load <GameObject>(unitData.ModelName);
            GameObject   g        = Instantiate(Resource) as GameObject;
            NpcAttribute npc      = NGUITools.AddMissingComponent <NpcAttribute>(g);

            //npc.spawnTrigger = spawn.gameObject;

            g.transform.parent = transform;
            g.tag   = GameTag.Enemy;
            g.layer = (int)GameLayer.Npc;
            if (info != null)
            {
                g.name += "_" + info.Id;
            }

            var type = Type.GetType("MyLib." + unitData.AITemplate);
            var t    = typeof(NGUITools);
            var m    = t.GetMethod("AddMissingComponent");

            Log.AI("Monster Create Certain AI  " + unitData.AITemplate + " " + type);
            var geMethod = m.MakeGenericMethod(type);

            geMethod.Invoke(null, new object[] { g });// as AIBase;


            var netView = g.GetComponent <KBEngine.KBNetworkView>();

            //服务器返回的ViewId
            //Owner 客户端怪物 服务器怪物
            //Id ViewId
            if (info != null)
            {
                netView.SetServerID(info.Id);
            }
            else
            {
                netView.SetServerID(Util.NotInitServerID);
            }

            netView.IsPlayer = false;

            npc.SetObjUnitData(unitData);
            AddObject(netView.GetServerID(), netView);

            //不算怪物允许不去打
            if (info != null)
            {
                npc.transform.position = NetworkUtil.FloatPos(info.X, info.Y, info.Z);
            }
            else
            {
                //npc.transform.position = spawn.transform.position;
            }

            //BattleManager.battleManager.AddEnemy(npc.gameObject);
            //npc.SetDeadDelegate = BattleManager.battleManager.EnemyDead;

            var sync = npc.GetComponent <MonsterSync>();

            if (sync != null)
            {
                sync.SyncAttribute(info);
            }
        }
Exemple #4
0
        public void CreateChestFromNetwork(UnitData unitData, SpawnChest spawn, EntityInfo info = null)
        {
            Log.Sys("Create Chest Unit " + unitData.name);
            var          Resource = Resources.Load <GameObject>(unitData.ModelName);
            GameObject   g        = Instantiate(Resource) as GameObject;
            NpcAttribute npc      = NGUITools.AddMissingComponent <NpcAttribute>(g);

            npc.spawnTrigger = spawn.gameObject;

            g.transform.parent = transform;
            g.tag   = GameTag.Enemy;
            g.layer = (int)GameLayer.Npc;

            var type = Type.GetType("MyLib." + unitData.AITemplate);
            var t    = typeof(NGUITools);
            var m    = t.GetMethod("AddMissingComponent");

            Log.AI("Monster Create Certain AI  " + unitData.AITemplate + " " + type);
            var geMethod = m.MakeGenericMethod(type);

            geMethod.Invoke(null, new object[] { g });// as AIBase;


            var netView = g.GetComponent <KBEngine.KBNetworkView>();

            //服务器返回的ViewId
            //Owner 客户端怪物 服务器怪物
            //Id ViewId
            if (info != null)
            {
                netView.SetID(new KBEngine.KBViewID(info.Id, myPlayer));
            }
            else
            {
                netView.SetID(new KBEngine.KBViewID(-1, myPlayer));
            }

            netView.IsPlayer = false;

            npc.SetObjUnitData(unitData);
            AddObject(netView.GetServerID(), netView);

            //不算怪物允许不去打
            if (info != null)
            {
                npc.transform.position = NetworkUtil.FloatPos(info.X, info.Y, info.Z);
            }
            else
            {
                npc.transform.position = spawn.transform.position;
            }


            BattleManager.battleManager.AddEnemy(npc.gameObject);
            npc.SetDeadDelegate = BattleManager.battleManager.EnemyDead;


            var sync = npc.GetComponent <MonsterSync>();

            if (sync != null)
            {
                sync.SyncAttribute(info);
            }
        }