public void Control() { Vector2 velocity = rb.velocity; float moveX = MOVEMENT_X_AIR; if (pressedJump && Input.GetAxis("Vertical") > 0 && timeJumpPressed < JUMP_TIME_LIMIT_PRESS) { timeJumpPressed += Time.deltaTime; velocity.y = MOVEMENT_Y * Time.deltaTime; } else { pressedJump = false; } if (isGround()) { pressedJump = false; timeReloadJump -= Time.deltaTime; moveX = MOVEMENT_X_GROUND; velocity.x = 0; if (Input.GetAxis("Vertical") > 0 && timeReloadJump <= 0) { // Jump velocity.y = MOVEMENT_Y * Time.deltaTime; timeReloadJump = JUMP_RELOAD; timeJumpPressed = 0; isGrounded = false; pressedJump = true; } else if (Input.GetAxis("Vertical") < 0) { // DownTheLadder } } wallCollidingDirection wallHitting = isHittingWall(); if (canMove && wallHitting != wallCollidingDirection.Booth) { if (Input.GetAxis("Horizontal") > 0 && wallHitting != wallCollidingDirection.Right) { // Right velocity.x = moveX; } else if (Input.GetAxis("Horizontal") < 0 && wallHitting != wallCollidingDirection.Left) { // Left velocity.x = -moveX; } } rb.velocity = velocity; }
private wallCollidingDirection isHittingWall() { wallCollidingDirection collidingDirection = wallCollidingDirection.None; Vector2 positionR = transform.position; positionR.x += bc.bounds.extents.x; positionR.y += bc.bounds.extents.y; Vector2 positionR2 = transform.position; positionR2.x = positionR.x; positionR2.y -= bc.bounds.extents.y; if (isCollidingInDirection(positionR, Vector3.right) || isCollidingInDirection(positionR2, Vector3.right)) { collidingDirection = wallCollidingDirection.Right; } Vector2 positionL = transform.position; positionL.x -= bc.bounds.extents.x; positionL.y += bc.bounds.extents.y; Vector2 positionL2 = transform.position; positionL2.x = positionL.x; positionL2.y -= bc.bounds.extents.y; if (isCollidingInDirection(positionL, Vector3.left) || isCollidingInDirection(positionL2, Vector3.left)) { if (collidingDirection != wallCollidingDirection.None) { collidingDirection = wallCollidingDirection.Booth; } else { collidingDirection = wallCollidingDirection.Left; } } return(collidingDirection); }