/// <summary> /// 实例化下一波作战单位 /// </summary> public void InstUnits() { HealthUIManager.instance.ResetDepth(); int[] ids = DungeonManager.enemyWave[wave]; wave++; for (int i = 0; i < ids.Length; i++) { MonsterData monsterData = monsterDataDic[ids[i]]; string modelName = Util.GetConfigString(monsterData.model); GameObject child = AssetManager.GetGameObject(modelName, battle_points[i]); if (monsterData.direction == 1) { child.transform.Rotate(new Vector3(0, 180, 0)); } child.layer = gameObject.layer; child.transform.parent = transform.parent; MonsterFightUnit unit = child.AddComponent <MonsterFightUnit>(); fightUnits.Add(unit); unit.parentGroup = this; unit.orinPoint = battle_points[i]; unit.birthPoint = battle_points [i]; //父节点坐标不为0 float x = battle_points[i].localPosition.x + battle_points[i].parent.localPosition.x; float y = battle_points[i].localPosition.y + battle_points[i].parent.localPosition.y; float z = battle_points[i].localPosition.z + battle_points[i].parent.localPosition.z; unit.birthPoint.localPosition = new Vector3(x, y, z); unit.birthPoint.localRotation = battle_points[i].localRotation; unit.birthPoint.localScale = Vector3.one; //赋值战斗属性 unit.monsterData = monsterData; unit.InitFightAttribute(); //赋值技能id MonsterAttack monsterAttack = child.GetComponent <MonsterAttack>(); monsterAttack.normalAttackId = (int)monsterData.attackID; JsonData data = JsonMapper.ToObject(Util.GetConfigString(monsterData.skill)); monsterAttack.autoSkillsId = new int[data.Count]; for (int num = 0; num < monsterAttack.autoSkillsId.Length; num++) { int id; int.TryParse(data[num].ToString(), out id); monsterAttack.autoSkillsId[num] = id; } //血条UI Transform healthBarPos = child.transform.Find("blood"); HealthUIManager.instance.AddNewHealthBar(fightUnits[i], healthBarPos, group == GroupType.Enemy); } }
public override void Init() { self = GetComponent <MonsterFightUnit>(); self.OnNoramlAttackFinish += ThinkUseSkill; /*普通攻击初始化*/ normalAttack = NGUITools.AddChild <NormalAttack>(gameObject); normalAttack.attack = Util.GetDic <MsgAttackData, AttackData>()[normalAttackId]; JsonData castEffectDt = JsonMapper.ToObject(Util.GetConfigString(normalAttack.attack.castEffect)); for (int i = 0; i < castEffectDt.Count; i++) { normalAttack.castEffectIds.Add((int)castEffectDt[i]); } JsonData flyEffectDt = JsonMapper.ToObject(Util.GetConfigString(normalAttack.attack.flyEffect)); for (int i = 0; i < flyEffectDt.Count; i++) { normalAttack.flyEffectIds.Add((int)flyEffectDt[i]); } JsonData hitEffectDt = JsonMapper.ToObject(Util.GetConfigString(normalAttack.attack.hitEffect)); for (int i = 0; i < hitEffectDt.Count; i++) { normalAttack.hitEffectIds.Add((int)hitEffectDt[i]); } normalAttack.mineUnit = self; normalAttack.Init(); /*主动技能初始化*/ foreach (int normalSkillId in autoSkillsId) { ActiveSkill normalSkill = NGUITools.AddChild <ActiveSkill>(gameObject); normalSkill.normalSkill = Util.GetDic <MsgNormalSkill, NormalSkill>()[normalSkillId]; normalSkill.dmgEffectId = (int)normalSkill.normalSkill.dmgEffect; normalSkill.castEffectId = (int)normalSkill.normalSkill.castEffect; normalSkill.flyEffectId = (int)normalSkill.normalSkill.flyEffect; normalSkill.hitEffectId = (int)normalSkill.normalSkill.hitEffect; normalSkill.mineUnit = self; int LvUpId = normalSkillId * 100 + 1; normalSkill.normalSkillLvUp = Util.GetDic <MsgNormalSkillLvUp, NormalSkillLvUp>()[LvUpId]; normalSkill.Init(); MonsterSkill skillCondition = null; Util.GetDic <MsgMonsterSkill, MonsterSkill>().TryGetValue(normalSkillId, out skillCondition); SkillCondition condition = SkillCondition.None; int conditionVal = 0; float minCd = 0; float maxCd = 0; if (skillCondition != null) { JsonData dt = JsonMapper.ToObject(Util.GetConfigString(skillCondition.condition)); if (dt.Count == 2) { condition = (SkillCondition)int.Parse(dt[0].ToString()); conditionVal = int.Parse(dt[1].ToString()); } JsonData dt_1 = JsonMapper.ToObject(Util.GetConfigString(skillCondition.interval)); minCd = float.Parse(dt_1[0].ToString()); maxCd = float.Parse(dt_1[1].ToString()); } ActiveSkillStruct activeSkillStruct = new ActiveSkillStruct(); activeSkillStruct.autoSkill = normalSkill; activeSkillStruct.autoSkillCondition = skillCondition; activeSkillStruct.condition = condition; activeSkillStruct.conditionVal = conditionVal; activeSkillStruct.minCd = minCd; activeSkillStruct.maxCd = maxCd; autoSkills.Add(activeSkillStruct); } enabled = false; }