/// <summary> /// 释放技能 /// </summary> /// <param name="index">技能索引</param> public void Cast(int index) { // 技能组配置 SkillGroupCfg cfg = ConfigManager.instance.GetSkillGroupCfg(_cfg.ID, index); // 技能基础配置 SkillBasicCfg basicCfg = ConfigManager.instance.GetSkillBasicCfg(cfg.ID); // 技能发射器 SkillCaster skillCaster = _skillCasters[cfg.ID]; // 战斗界面 //BattleWnd battleWnd = UIManager.instance.Get<BattleWnd>(); //if (basicCfg.NeedTarget && _lockedTarget == null) //{ // battleWnd.ShowTips("需要一个目标"); // return; //} //if (basicCfg.NeedTarget && _lockedTarget != null && basicCfg.AffectSide == AffectSide.Enemy && _lockedTarget.side == side) //{ // battleWnd.ShowTips("非法目标"); // return; //} //if (basicCfg.NeedTarget && _lockedTarget != null && basicCfg.AffectSide == AffectSide.Friend && _lockedTarget.side != side) //{ // battleWnd.ShowTips("非法目标"); // return; //} //if (!skillCaster.cooldown) //{ // battleWnd.ShowTips("这个法术还没有准备好"); // return; //} //if (basicCfg.NeedTarget && _lockedTarget != null && Vector3.Distance(_transform.position, _lockedTarget.position) >= basicCfg.MaxRange) //{ // battleWnd.ShowTips("不在攻击范围之内"); // return; //} skillCaster.Cast(); // 施法者播放动画 Attack(basicCfg); // 播放特效 if (basicCfg.CastEffect != null) { SkillManager.instance.PlayEffect(basicCfg.CastEffect, position, forward); } }
/// <summary> /// 攻击 /// </summary> /// <param name="skillid"></param> public virtual void Attack(SkillBasicCfg cfg) { // 攻击时不能移动 if (_navmeshAgent.enabled) { _navmeshAgent.enabled = false; } // 设置攻击朝向 if (cfg.NeedTarget && _globalID != _lockedTarget.GlobalID) { _transform.forward = (_lockedTarget.position - _transform.position).normalized; } // 播放动画 _animation.CrossFade(cfg.AnimName); }