//获得目标特效 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); }
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(); } }
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; }
/// <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); } } }