예제 #1
0
    //공격 애니메이션 재생이 끝나면 호출되는 애니메이션 이벤트 함수
    void OnAttackAnimFinished()
    {
        if (NextAttack)
        {
            NextAttack = false;
            switch (AttackState)
            {
            case FighterAttackState.Attack1:
                AttackState = FighterAttackState.Attack2;
                break;

            case FighterAttackState.Attack2:
                AttackState = FighterAttackState.Attack3;
                break;

            case FighterAttackState.Attack3:
                AttackState = FighterAttackState.Attack4;
                break;

            case FighterAttackState.Attack4:
                AttackState = FighterAttackState.Attack1;
                break;
            }
        }
        else
        {
            CannotMove  = false;
            myState     = PlayerState.Idle;
            AttackState = FighterAttackState.Attack1;
        }
    }
예제 #2
0
    /// <summary>
    /// 공격 애니메이션 재생이 끝나면 호출되는 애니메이션 이벤트 함수
    /// </summary>
    void OnAttackAnimFinished()
    {
        if (nextAttack == true)
        {
            nextAttack = false;
            switch (attackState)
            {
            case FighterAttackState.Attack1:
                attackState = FighterAttackState.Attack2;
                break;

            case FighterAttackState.Attack2:
                attackState = FighterAttackState.Attack3;
                break;

            case FighterAttackState.Attack3:
                attackState = FighterAttackState.Attack4;
                break;

            case FighterAttackState.Attack4:
                attackState = FighterAttackState.Attack1;
                break;
            }
        }
        else
        {
            cannotMove  = false;
            myState     = FighterState.Idle;
            attackState = FighterAttackState.Attack1;
        }
    }
예제 #3
0
    /// <summary>
    /// 마우스 왼쪽 버튼으로 공격을 합니다
    /// </summary>
    void InputControl()
    {
        // 0 마우스 왼쪽, 1 오른쪽, 2 휠
        if (Input.GetMouseButtonDown(0) == true)
        {
            // 내가 공격중이 아니라면 공격 시작
            if (myState != FighterState.Attack)
            {
                myState     = FighterState.Attack;
                attackState = FighterAttackState.Attack1;
            }
            else
            {
                // 공격 중이라면 애니메이션이 일정 이상 재생이 되었다면 다음 공격 활성화
                switch (attackState)
                {
                case FighterAttackState.Attack1:
                    if (myAnimation[attack1AnimClip.name].normalizedTime > 0.1f)
                    {
                        nextAttack = true;
                    }
                    break;

                case FighterAttackState.Attack2:
                    if (myAnimation[attack2AnimClip.name].normalizedTime > 0.1f)
                    {
                        nextAttack = true;
                    }
                    break;

                case FighterAttackState.Attack3:
                    if (myAnimation[attack3AnimClip.name].normalizedTime > 0.1f)
                    {
                        nextAttack = true;
                    }
                    break;

                case FighterAttackState.Attack4:
                    if (myAnimation[attack4AnimClip.name].normalizedTime > 0.1f)
                    {
                        nextAttack = true;
                    }
                    break;
                }
            }
        }
        if (Input.GetMouseButtonDown(1) == true)
        {
            if (myState == FighterState.Attack)
            {
                attackState = FighterAttackState.Attack1;
                nextAttack  = false;
            }
            myState = FighterState.Skill;
        }
    }
예제 #4
0
        private void InputControl()
        {
            // 0은 왼쪽 버튼, 1은 오른쪽버튼, 2는 휠버튼
            if (Input.GetMouseButtonDown(0) == true)
            {
                if (_state != FighterState.Attack)
                {
                    _state      = FighterState.Attack;
                    attackState = FighterAttackState.Attack1;
                }
                else
                {
                    switch (attackState)
                    {
                    case FighterAttackState.Attack1:
                        // 10%이상 진행되었다면
                        if (_animation[attack1AnimClip.name].normalizedTime > 0.1f)
                        {
                            nextAttack = true;
                        }
                        break;

                    case FighterAttackState.Attack2:
                        if (_animation[attack2AnimClip.name].normalizedTime > 0.1f)
                        {
                            nextAttack = true;
                        }
                        break;

                    case FighterAttackState.Attack3:
                        if (_animation[attack3AnimClip.name].normalizedTime > 0.1f)
                        {
                            nextAttack = true;
                        }
                        break;

                    case FighterAttackState.Attack4:
                        if (_animation[attack4AnimClip.name].normalizedTime > 0.1f)
                        {
                            nextAttack = true;
                        }

                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }
        }
예제 #5
0
 /// <summary>
 /// 스킬을 사용하는 함수
 /// </summary>
 public void OnSkill()
 {
     if (skillcool || User.Instance.mpcur < 20)//쿨타임 중이거나 마나가 모자르다면
     {
         skillText.gameObject.SetActive(true);
         Invoke("TextDisable", 1.5f);
         return;
     }
     if (myState == PlayerState.Attack)
     {
         AttackState = FighterAttackState.Attack1;
         NextAttack  = false;
     }
     myState = PlayerState.Skill;
     MpUse();
     StartCoroutine(SkillCoolTime(5f));
 }
예제 #6
0
    /// <summary>
    /// 공격을 합니다.
    /// </summary>
    public void Attack()
    {
        //내가 공격중이 아니라면 공격을 시작하게 되고
        if (myState != PlayerState.Attack)
        {
            myState     = PlayerState.Attack;
            AttackState = FighterAttackState.Attack1;
        }
        else
        {   //공격 중이라면 애니메이션이 일정 이상 재생이 되었다면 다음 공격을 활성화
            switch (AttackState)
            {
            case FighterAttackState.Attack1:
                if (myAnimation[Attack1AnimClip.name].normalizedTime > 0.1f)
                {
                    NextAttack = true;
                }
                break;

            case FighterAttackState.Attack2:
                if (myAnimation[Attack2AnimClip.name].normalizedTime > 0.1f)
                {
                    NextAttack = true;
                }
                break;

            case FighterAttackState.Attack3:
                if (myAnimation[Attack3AnimClip.name].normalizedTime > 0.1f)
                {
                    NextAttack = true;
                }
                break;

            case FighterAttackState.Attack4:
                if (myAnimation[Attack4AnimClip.name].normalizedTime > 0.1f)
                {
                    NextAttack = true;
                }
                break;
            }
        }
    }
예제 #7
0
    public void OnDashSkill()
    {
        if (CannotMove)//이동불가일때는 함수 리턴
        {
            return;
        }
        if (dashcool || User.Instance.mpcur < 20)//쿨타임 중이거나 마나가 모자르다면
        {
            skillText.gameObject.SetActive(true);
            Invoke("TextDisable", 1.5f);
            return;
        }

        if (myState == PlayerState.Attack)
        {
            AttackState = FighterAttackState.Attack1;
            NextAttack  = false;
        }
        rbody.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotation;
        DashMoving        = true;
        myState           = PlayerState.DashSkill;
        MpUse();
        StartCoroutine(DashCoolTime(5f));
    }