Beispiel #1
0
        //获得目标特效
        private string GetTargetEffectId(uint skillId, int index, bool isBullet)
        {
            SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillId);

            if (null == skillVo)
            {
                Log.info(this, "SkillBaseVo表不存在id为" + skillId + "的技能");
                return(null);
            }
            SysSkillActionVo actionVo = BaseDataMgr.instance.GetSysSkillActionVo(skillVo.skill_group);

            if (null == actionVo)
            {
                Log.info(this, "Action表不存在id为" + skillVo.skill_group + "的技能组");
                return(null);
            }

            string[] effectIds = StringUtils.GetValueListFromString(actionVo.tar_eff);

            if (index < effectIds.Length)
            {
                if (isBullet)
                {
                    return(effectIds[index]);
                }
                int randomIndex = UnityEngine.Random.Range(0, effectIds.Length);
                return(effectIds[randomIndex]);
            }
            return(string.Empty);
        }
Beispiel #2
0
        public void UseSkillById(uint skillId)
        {
            SysSkillBaseVo skillVo = BaseDataMgr.instance.GetSysSkillBaseVo(skillId);

            if (skillVo == null)
            {
                Log.debug(this, "SkillBase表不存在id为" + skillId + "的技能");
                return;
            }
            _currentSkillVo = skillVo;
            var actionVo = BaseDataMgr.instance.GetDataByTypeAndId <SysSkillActionVo>(BaseDataConst.SYS_SKILL_ACTION_VO,
                                                                                      skillVo.skill_group);

            if (actionVo == null)
            {
                Log.debug(this, "Action表不存在id为" + skillVo.skill_group + "的技能组");
                return;
            }
            _currentActionVo = actionVo;
            MeController.StatuController.SetStatu(actionVo.action_id);
            ShowSkillEffect(actionVo, skillVo);
            if (skillVo.need_keep)
            {
                MeController.GetMeVo().NeedKeep = true;
            }
            if (MeController.Me.Type == DisplayType.PET)
            {
                MeController.TalentSkillController.UseTalentSkill();
            }
        }
Beispiel #3
0
 public void Start()
 {
     _petVo         = MeController.GetMeVoByType <PetVo>();
     _talentSkillVo = BaseDataMgr.instance.GetSysSkillBaseVo(_petVo.SkillId);
     if (_talentSkillVo != null)
     {
         _talentSkillActionVo = BaseDataMgr.instance.GetSysSkillActionVo(_talentSkillVo.skill_group);
     }
     _masterVo      = _petVo.MasterVo;
     _masterDisplay = _petVo.MasterDisplay;
 }
Beispiel #4
0
        /// <summary>
        ///     显示技能对应的特效
        /// </summary>
        /// <param name="actionVo"></param>
        public void ShowSkillEffect(SysSkillActionVo actionVo, SysSkillBaseVo skillVo)
        {
            string[] effectIds = StringUtils.GetValueListFromString(actionVo.use_eff);
            if (effectIds.Length > 0 && !effectIds[0].Equals(""))
            {
                string effectId = effectIds[0];
                var    effectVo = new Effect
                {
                    URL             = UrlUtils.GetSkillEffectUrl(effectId),
                    Direction       = MeController.Me.CurFaceDire,
                    BasePosition    = MeController.transform.position,
                    Offset          = Vector3.zero,
                    SkillController = this,
                    NeedCache       = true
                };

                //使用者特效是否跟随主角
                if (actionVo.use_eff_need_follow)
                {
                    effectVo.Target = MeController.gameObject;
                }

                EffectMgr.Instance.CreateSkillEffect(effectVo);
            }



            //Boss预警特效
            if (IsBossAttack(actionVo.id))
            {
                EffectMgr.Instance.CreateMainFollowEffect(EffectId.Main_BossWarning, MeController.gameObject, Vector3.zero, false);
            }

            //显示子弹特效
            if (actionVo.IsBullet)
            {
                string[] effectList = StringUtils.SplitVoString(actionVo.process_eff, "],[");
                for (int i = 0; i < effectList.Length; i++)
                {
                    string[] effectInfo = StringUtils.GetValueListFromString(effectList[i]);
                    if (effectInfo.Length < 2)
                    {
                        continue;
                    }
                    float delayTime    = int.Parse(effectInfo[1]) * 0.001f;
                    var   effectBullet = new Effect
                    {
                        URL               = UrlUtils.GetSkillEffectUrl(effectInfo[0]),
                        Id                = uint.Parse(effectInfo[0]),
                        Direction         = MeController.Me.CurFaceDire,
                        BasePosition      = MeController.transform.position,
                        Offset            = Vector3.zero,
                        Target            = null,
                        Speed             = actionVo.bullet_speed,
                        IsBullet          = actionVo.IsBullet,
                        BulletType        = actionVo.BulletType,
                        CheckInterval     = actionVo.CheckInterval,
                        MaxTravelDistance = actionVo.BulletTravelDistance * 0.001f,
                        SkillController   = this,
                        DelayTime         = delayTime,
                        EffectIndex       = i,
                        NeedCache         = true
                    };
                    EffectMgr.Instance.CreateSkillEffect(effectBullet);
                }

                //剑士技能3子弹需要播放音效
                if (skillVo.id >= SkillConst.Sword_Skill3_ID_Min && skillVo.id <= SkillConst.Sword_Skill3_ID_Max)
                {
                    SoundMgr.Instance.PlaySkillAudio(SoundId.Sound_SwordSkill3Bullet);
                }
            }
        }