Пример #1
0
    void LoadSkillConfig()
    {
        m_curSkillID = Convert.ToUInt32(SkillID.text);
        m_SkillInfo  = CSVManager.GetSkillCfg(m_curSkillID);
        if (m_SkillInfo == null)
        {
            Debug.LogError("不存在技能id " + m_curSkillID);
            return;
        }

        SkillType.text  = m_SkillInfo.type.ToString();
        AttackType.text = m_SkillInfo.attackType.ToString();
        //MagicType.text = m_SkillInfo.magicType.ToString();
        AttackDistance.text        = m_SkillInfo.attackDistance.ToString();
        HitTime.text               = m_SkillInfo.hitTime.ToString();
        FlySpeed.text              = m_SkillInfo.flySpeed.ToString();
        CastEffect.text            = m_SkillInfo.castEffect == null ? "" : m_SkillInfo.castEffect;
        CastEffectBeginTime.text   = m_SkillInfo.castEffectBeginTime.ToString();
        CastEffectDuration.text    = m_SkillInfo.castEffectDuration.ToString();
        CastEffectBindBone.text    = m_SkillInfo.castEffectBindBone == null ? "" : m_SkillInfo.castEffectBindBone;
        BulletEffect.text          = m_SkillInfo.BulletEffect == null ? "" : m_SkillInfo.BulletEffect;
        BulletEffectBeginTime.text = m_SkillInfo.BulletBeginTime.ToString();
        BulletEffectBindBone.text  = m_SkillInfo.BulletBindBone == null ? "" : m_SkillInfo.BulletBindBone;
        BeAttackEffect.text        = m_SkillInfo.beattackEffect == null ? "" : m_SkillInfo.beattackEffect;
        CastAction.text            = m_SkillInfo.castAction == null ? "" : m_SkillInfo.castAction;
        CastActionBeginTime.text   = m_SkillInfo.castActionBeginTime.ToString();
        BeAttackAction.text        = m_SkillInfo.beattackAction == null ? "" : m_SkillInfo.beattackAction;
    }
Пример #2
0
    void PlayAction(uint skillID, List <Entity> targets = null)
    {
        CSVSkill skillInfo = CSVManager.GetSkillCfg(skillID);

        if (!string.IsNullOrEmpty(skillInfo.castAction))
        {
            m_entity.Anim.SyncAction(skillInfo.castAction);
        }
    }
Пример #3
0
    void CastBullet(uint skillID, List <Entity> targets = null)
    {
        CSVSkill skillInfo = CSVManager.GetSkillCfg(skillID);
        Bullet   bu        = BulletManager.Instance.Get();

        if (bu != null)
        {
            bu.Init(m_entity, skillInfo, SkillProcesser.BulletHit, m_entity.SelectTarget);
        }
    }
Пример #4
0
    //由时间控制的击中事件,一般是近战类攻击击中目标
    public void SkillHit(uint skillID, List <Entity> targets = null)
    {
        if (targets == null)
        {
            Log.Info("技能id = " + skillID + " 没有目标");
            return;
        }

        CSVSkill skillInfo = CSVManager.GetSkillCfg(skillID);

        //技能类型(1.普攻 2.物理 3.法术 4.保护 5.治疗 6.辅助 7.召唤 8.被动)
        if (skillInfo.type <= 3)
        {
            for (int i = 0; i < targets.Count; i++)
            {
                Entity target = targets[i];
                if (target.IsDead || target.invincible)
                {
                    continue;
                }

                //受击动作
                if (!string.IsNullOrEmpty(skillInfo.beattackAction))
                {
                    target.Anim.SyncAction(skillInfo.beattackAction);
                }
                //受击特效

                if (!string.IsNullOrEmpty(skillInfo.beattackEffect))
                {
                    EffectEntity effect = EffectManager.Instance.GetEffect(skillInfo.beattackEffect);
                    effect.Init(eDestroyType.Time, skillInfo.beattackActionDuration);

                    effect.Pos     = target.Pos;
                    effect.Forward = target.Forward;
                }

                SkillProcesser.CalcBlood(m_entity, target, skillInfo);
            }
        }
        else if (skillInfo.type <= 6)
        {
            //添加增益buff
            for (int i = 0; i < targets.Count; i++)
            {
            }
        }
    }
Пример #5
0
 public void SetSpecialSkills(string str)
 {
     string[] s = str.Split(new char[] { '|' });
     m_skillList.Clear();
     for (int i = 0; i < s.Length; i++)
     {
         uint     SkillID = System.Convert.ToUInt32(s[i]);
         CSVSkill sk      = CSVManager.GetSkillCfg(SkillID);
         if (sk == null)
         {
             Log.Error("不存在技能id " + SkillID);
             continue;
         }
         m_skillList.Add(new SkillBase(sk, m_entity));
     }
 }
Пример #6
0
    public static void ProcessSkill(ReqCastSkill msg)
    {
        Entity caster = EntityManager.Instance.Find(msg.caster);

        if (caster == null)
        {
            Log.Error("找不到技能释放者!  id = " + msg.caster);
            return;
        }
        CSVSkill skillInfo = CSVManager.GetSkillCfg(msg.skillID);

        if (skillInfo == null)
        {
            Log.Error("找不到技能配置 skillid = " + msg.skillID);
            return;
        }

        List <Entity> targets = GetTargets(msg, skillInfo);

        if (targets == null)
        {
            return;
        }

        List <SkillResult> result = null;

        for (int i = 0; i < targets.Count; i++)
        {
            SkillResult sr = new SkillResult();
            sr.target = msg.target;
            if (skillInfo.type == 1) //普攻
            {
                sr.damage = caster.Property.PhysicDamage - targets[i].Property.PhysicDefence;
            }
            else if (skillInfo.type == 2)        //物理技能攻击
            {
            }
            else if (skillInfo.type == 3)    //法术技能攻击
            {
            }
            result.Add(sr);
        }
        OnCastSkill rsp = new OnCastSkill();

        rsp.result = result;
        caster.OnEvent(eEntityEvent.OnSkillResult, rsp);
    }
Пример #7
0
 public void SetNormalSkills(string str)
 {
     string[] s = str.Split(new char[] { '|' });
     m_normalAttackList.Clear();
     for (int i = 0; i < s.Length; i++)
     {
         uint     SkillID = System.Convert.ToUInt32(s[i]);
         CSVSkill sk      = CSVManager.GetSkillCfg(SkillID);
         if (sk == null)
         {
             Log.Error("不存在技能id " + SkillID);
             continue;
         }
         m_normalAttackList.Add(new SkillBase(sk, m_entity));
     }
     //攻击距离以普攻的攻击距离为准
     AttackDistance = m_normalAttackList[0].m_skillInfo.attackDistance;
 }
Пример #8
0
    void PlayEffect(uint skillID, List <Entity> targets = null)
    {
        CSVSkill skillInfo = CSVManager.GetSkillCfg(skillID);

        if (string.IsNullOrEmpty(skillInfo.castEffect))
        {
            return;
        }

        EffectEntity effect = EffectManager.Instance.GetEffect(skillInfo.castEffect);

        effect.Init(eDestroyType.Time, skillInfo.castEffectDuration);
        //特效绑定的骨骼

        if (!string.IsNullOrEmpty(skillInfo.castEffectBindBone))
        {
            Transform bone = null;

            if (skillInfo.castEffectBindBone.CompareTo("self") == 0)
            {
                bone = m_object.transform;
            }
            else
            {
                bone = m_entity.GetBone(skillInfo.castEffectBindBone);
            }

            if (bone != null)
            {
                effect.Bind(bone);
            }
        }
        //如果特效没有绑定位置,则默认位置为释放者的位置
        else
        {
            effect.Pos     = m_entity.Pos;
            effect.Forward = m_entity.Forward;
        }
    }