Esempio n. 1
0
 void Update()
 {
     if (playerStates.allowFreeMov)
     {
         if (playerStates.isWallClimbable && !playerStates.isWallClimbing)
         {
             playerCommons.updateWallInteractions(true, null, null);
             animTimer = 0.0f;
         }
         else if (playerStates.isWallRunnable && !playerStates.isWallRunning)
         {
             playerCommons.updateWallInteractions(null, true, null);
             animTimer = 0.0f;
         }
     }
 }
Esempio n. 2
0
    void ButtonInputs()
    {
        if (Input.GetButton("Jump"))    // The instance the button is active : Returns true whenever its pressed/held or active
        {
            playerStates.isOffGrounding = true;
        }
        else if (playerStates.isJumping || playerStates.isLedgeHopping)     // If you let go of jump button while jumping
        {
            playerStates.isJumping      = false;
            playerStates.isLedgeHopping = false;
        }

        if (Input.GetButtonDown("Jump"))    // The instance the button is pressed : Returns true only once when pressed

        {
            if (playerStates.allowFreeMov)     // If in free movement, not on locked movement

            {
                if (playerStates.isWallHoppable && !playerStates.isJumping)     // #1 - Wall hop if wall hoppable and not mid jump
                {
                    WallHop();
                }
                else if (playerStates.isGrounded)                               // #2 - Regular jump if grounded
                {
                    playerStates.isJumping = true;
                }
                else                                                            // #3 - Air dash if mid air
                {
                    AirDash();
                }
            }
            else     // If in locked movement (wallrun, wallclimb, etc.)

            {
                if (playerStates.isWallRunning || playerStates.isWallClimbing)
                {
                    playerCommons.updateWallInteractions(false, false, null);
                    WallHop();
                }
                else if (playerStates.isLedgeHanging)
                {
                    float playerAngle = fpvCam.transform.rotation.eulerAngles.y;
                    float angleRange  = 15.0f;
                    float angleMax    = miscHelper.normalizeDegrees(playerStates.wallAngleY + angleRange);
                    float angleMin    = miscHelper.normalizeDegrees(playerStates.wallAngleY - angleRange);
                    bool  facingAngle = miscHelper.AngleRangeCheck(angleMin, angleMax, playerAngle);
                    if (facingAngle)    // TODO++ : REWORK LEDGEHOP TO AUTOMATICALLY TRIGGER ONCE THE PLAYER HAS BEGUN LEDGE HANGING
                    {
                        playerStates.isLedgeHopping = true;
                    }
                    else
                    {
                        WallHop();
                    }
                    rb.useGravity = true;
                    playerCommons.updateWallInteractions(null, null, false);
                }
                playerCommons.modifyControls(true, true);
                playerCommons.modifyCamControl(false);
            }
        }
    }