Пример #1
0
    void CheckInput()
    {
        StickFighterState state = GetState();

        if (state != StickFighterState.Unknown)
        {
            return;
        }

        if (SystemInfo.deviceType != DeviceType.Handheld) // This is handled from StickFightHitButton on handheld devices
        {
            bool wantsToDuck     = Input.GetButtonDown("interact");
            bool wantsToHitLeft  = Input.GetButton("left");
            bool wantsToHitRight = Input.GetButton("right");

            if (wantsToHitLeft)
            {
                WantsToHitLeft();
            }
            else if (wantsToHitRight)
            {
                WantsToHitRight();
            }
            else if (wantsToDuck && Time.time >= duckTimer)
            {
                WantsToDuck();
            }
        }
    }
    public override StickFighterState GetState()
    {
        StickFighterState state = base.GetState();

        if (state == StickFighterState.Unknown)
        {
            if (GetComponent <Animation>().IsPlaying(combinationPunch.name))
            {
                return(StickFighterState.CombinationPunch);
            }
            else if (GetComponent <Animation>().IsPlaying(dizzyAfterCombination.name))
            {
                return(StickFighterState.Dizzy);
            }
            else if (GetComponent <Animation>().IsPlaying(blockLeft.name) || GetComponent <Animation>().IsPlaying(blockRight.name))
            {
                return(StickFighterState.Blocking);
            }
            else
            {
                return(StickFighterState.BlockingEverything);
            }
        }

        return(state);
    }
    public void OnReceivedHitFromAnySide()
    {
        StickFighterState state = GetState();

        if (state == StickFighterState.Flinching)
        {
            flinchCountInRow++;
        }
        else
        {
            flinchCountInRow = 0;
        }
    }
    public override void OnReceivedHitFromLeft()
    {
        OnReceivedHitFromAnySide();
        StickFighterState state = GetState();

        Debug.Log("Opponent received potential hit left: " + state);
        if (state == StickFighterState.StartingRightPunch || (state == StickFighterState.Flinching && flinchCountInRow < 3) || state == StickFighterState.Dizzy)
        {
            ReceivedHitLeft();
        }
        else
        {
            if (state != StickFighterState.StartingLeftPunch && state != StickFighterState.CombinationPunch && state != StickFighterState.LeftPunch && state != StickFighterState.RightPunch)
            {
                GetComponent <Animation>().CrossFade(blockLeft.name, blockCrossFadeTime);
            }
            SendMessage("OnStickBlockLeft");
        }
    }