public IHeroState HandleInput(Hero hero, InputManager input, CollisionManager collision, GravityManager grav) { fallDir = grav.GetGravityVector2(); airControlDir = grav.GravCorrectWorldToLocalInput(input.horizontalInput, input.verticalInput); fallHorizontalRight = collision.transformRight; if (collision.onGround) { return(gameObject.GetComponent <IdleState>()); } if (collision.transformUp.x == 0) { fallHorizontalDir = input.horizontalInput; } else if (collision.transformUp.x == 1) { fallHorizontalDir = -input.verticalInput; } else if (collision.transformUp.x == -1) { fallHorizontalDir = input.verticalInput; } if ((collision.onRightWall && fallHorizontalDir > 0) || collision.onLeftWall && fallHorizontalDir < 0) { fallHorizontalDir = 0; } return(null); }