Пример #1
0
    /// <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);
        }
    }
Пример #2
0
    /// <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);
    }