//直接使用技能不切换状态 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); }
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); } }
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); } }