Beispiel #1
0
    //连续攻击处理方式:当前攻击快要完成时,按下攻击键
    public void DoAttack(int skillID)
    {
        //连击处理
        if (mySkill != null && skillID == mySkill.skillID)
        {
            //已有技能在释放中
            EmPlaySKillResult rt = mySkill.PlaySKill(timer, statusDuration, curAttribute.attackSpeed);
            if (rt == EmPlaySKillResult.WaitToCombo)
            {
                isReadyToCombo = true;
                nextAttackDir  = 0;
                //三段斩要立即记录按键的方向,切换攻击时立即应用
                if (mySkill.skillID == (int)EmSkillIDSet.TripleSlash)
                {
                    if (actorController.curPressKey == KeyCode.RightArrow || actorController.curPressKey == KeyCode.LeftArrow)
                    {
                        nextAttackDir = actorController.curPressKey == KeyCode.RightArrow ? 1 : -1;
                    }
                }
                return;
            }
            else if (rt == EmPlaySKillResult.None)
            {
                return;
            }
            //else if(rt == EmPlaySKillResult.PlayNext)
            //{
            //	//进行后续处理即可
            //}
        }
        else
        {
            //没有技能在释放中
            SkillState state = skillStateManager.GetSkillState(skillID);
            if (!state.isCding)
            {
                mySkill = SkillManager.GetSkill(this, skillID);
                state.StartCd();
            }
            else
            {
                audioSource.clip = ResourceLoader.LoadCharactorSound("effect/zieg_stab_02");
                audioSource.Play();
                Debug.Log("Skill is cding, remain + " + state.curCd + "s");
            }
            if (mySkill == null)
            {
                return;
            }
        }

        if (nextAttackDir != 0)
        {
            objectbase.isFacingRight = nextAttackDir == 1;
            nextAttackDir            = 0;
        }

        if (mySkill.curAttackConf.castTime > 0)
        {
            ChangeStatus(EmActorStatus.CastAttackChargeStart);
        }
        else
        {
            ChangeStatus(EmActorStatus.DoAttack);
        }
    }