Esempio n. 1
0
    /// <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);
        }
    }
Esempio n. 2
0
    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;
    }