Exemple #1
0
 /// <summary>
 /// 手动将一个技能添加到冷却列表中
 /// </summary>
 /// <param name="skill">要冷却的技能</param>
 protected void AddSkillTocdList(SkillCDAndWeight_New skill)
 {
     if (skill == null)
     {
         return;
     }
     _cdCalList.Add(skill);
 }
Exemple #2
0
    public int CompareTo(object obj)
    {
        SkillCDAndWeight_New bts = (SkillCDAndWeight_New)obj;

        if (this.Weight < bts.Weight)
        {
            return(-1);
        }
        if (this.Weight >= bts.Weight)
        {
            return(1);
        }
        return(0);
    }
Exemple #3
0
 void Update()
 {
     //第一个if就是当AI进入到近战范围内,开始从队列中取出技能来释放(释放节奏通过cd和weight控制)
     if (PropertyQueue.Count() != 0 && GetComplete() && CurrentSelfToTargetDis < SYAttackDistance)
     {
         skillCdAndWeightNew = GetOneSkillInPropertyList();
         if (skillCdAndWeightNew != null)
         {
             SkillOneAction = skillCdAndWeightNew.Skill;
             Debug.Log("........................................");
             TestSkill();
         }
     }
     //这个if控制带有特定触发条件的技能的触发
     if (isCanAssault && NowState == AIState.Run && (CurrentSelfToTargetDis < AssaultTriggerMaxDistance && CurrentSelfToTargetDis > AssaultTriggerMinDistance))
     {
         SkillOneAction = skill2Action;
         isCanAssault   = false;
         TestSkill();
     }
 }
Exemple #4
0
 /// <summary>
 /// 重写回调函数来实现一些初始化,该处在技能状态结束后,将带有CD和Weight封装的技能添加到cd列表中进行冷却。
 /// 没有封装的技能也会调用这里,由于skillCdAndWeightNew为空所以不会起任何作用。
 /// 也可以正常使用需要CD冷却但是不需要添加优先级队列的技能,只需要将权重设置为999即可
 /// </summary>
 public override void OnJustExitSkillState()
 {
     AddSkillTocdList(skillCdAndWeightNew);
     skillCdAndWeightNew = null;
 }
Exemple #5
0
    /// <summary>
    /// 手动返回一个当前可释放的技能
    /// </summary>
    /// <returns></returns>
    protected SkillCDAndWeight_New GetOneSkillInPropertyList()
    {
        SkillCDAndWeight_New skillCdAndWeightNew = PropertyQueue.Pop();

        return(skillCdAndWeightNew);
    }