Ejemplo n.º 1
0
 // UseCard
 private void ResetToUseCardState()
 {
     ResetGameObject(ResetToSet_State.USEWARD_STATE, 0);
     IsAnimFixed = IsAnimFixedType.USECARD_ANIM_STATE;
 }
Ejemplo n.º 2
0
    private void Update()
    {
        #region 這邊是用來判斷狀態回來時,表現的問題
        if (IsAnimFixed != IsAnimFixedType.UNFIXED)
        {
            switch (IsAnimFixed)
            {
            case IsAnimFixedType.USECARD_ANIM_STATE:
                Animator          anim          = UseCard.GetComponent <Animator>();
                AnimatorStateInfo animStateInfo = anim.GetCurrentAnimatorStateInfo(0);

                // 這邊是用來判斷是否要切換
                if (animStateInfo.IsName("UseCard_Normal"))
                {
                    SetUseCardParent(0);
                }
                else if (animStateInfo.IsName("UseCard_LightFX"))
                {
                    SetUseCardParent(1);
                }
                // 特效結束條件判斷
                else if (animStateInfo.IsName("AnimStop"))
                {
                    IsAnimFixed = IsAnimFixedType.UNFIXED;
                    SetUseCardParent(-1);
                }
                break;
            }
        }
        #endregion
        #region 要先判斷有沒有僵持的動作
        // 先判斷是否是僵持狀態
        if (IsAnimFixed != IsAnimFixedType.UNFIXED)
        {
            return;
        }

        // 使用卡片
        if (Input.GetKeyDown(KeyCode.Z))
        {
            ResetToUseCardState();
            return;
        }
        #endregion
        #region 要先判斷有沒有僵持的動作
        // 先判斷是否是僵持狀態
        if (IsAnimFixed != IsAnimFixedType.UNFIXED)
        {
            return;
        }
        #endregion
        #region 接收上下左右的操控
        int   TempState = 0;
        float GetInputH = Input.GetAxis("Horizontal");      // 水平(左右)
        float GetInputV = Input.GetAxis("Vertical");        // 垂直 (上下)

        // 設定狀態機
        // 左 +1 右 +2
        if (GetInputV < -ControlGap)
        {
            TempState = 1;
        }
        else if (GetInputV > ControlGap)
        {
            TempState = 2;
        }

        // 下 +3 上 +6
        if (GetInputH < -ControlGap)
        {
            TempState += 3;
        }
        else if (GetInputH > ControlGap)
        {
            TempState += 6;
        }

        // 總結
        //Debug.Log(TempState);
        if (TempState != 0)
        {
            ResetToWalkState(TempState);
            BoyMove(lastState);
            lastState = TempState;
        }
        else if (TempState == 0)
        {
            ResetToIdleState(lastState);
        }
        #endregion
    }