Can't get my walljump to work on the new input system
I've recently implemented the new input system to my 2D platformer and have been rewriting code to adapt to it. Previously i had it working so that no matter what direction you were pressing when jumping off of a wall it would still push you away from it. After re-writing everything and trying so many different things for hours I can't get it to push the player away from the wall if you are moving towards the wall you're on. e.g. you're on a wall on the left of the screen and you're holding left on the analog stick, you press the jump button but you stay stuck to the wall because you're still moving left.
Movement + wall grab code:
//Wall grabbing logic
if (onWall() && !isGrounded() && !slide)
{ //lowers gravity and stops all velocity
body.gravityScale = 0;
body.velocity = Vector2.zero;
}
else
{ //normal gravity
body.gravityScale = Gravity;
}
//Checks if not on a wall and then moves the player
if (!onWall())
{
transform.Translate(new Vector2(moveVal * speed, body.velocity.y) * Time.deltaTime);
slide = false;
}
Then the code that triggers when the jump button is pressed via the input system:
private void OnJump()
{
//sets jumps available to a set amount to allow for double jumping
if (isGrounded() || onWall())
JumpsAvailable = MaxJumps;
//double jumps if jump is available
if (!isGrounded() && !onWall() && JumpsAvailable > 0)
{
body.velocity = new Vector2(moveVal, jumpPower);
anim.SetTrigger("Jump");
JumpsAvailable--;
}//jumps if on ground
else if (isGrounded())
{
body.velocity = new Vector2(moveVal, jumpPower);
anim.SetTrigger("Jump");
JumpsAvailable--;
}//jumps if on the wall and not touching the ground
else if (onWall() && !isGrounded())
{
body.velocity = new Vector2(-Mathf.Sign(transform.localScale.x), wallJumpPower);
transform.localScale = new Vector2(-Mathf.Sign(transform.localScale.x), transform.localScale.y);
anim.SetTrigger("Jump");
JumpsAvailable--;
}
}
So pressing the jump button triggers OnJump. Everything there works perfectly fine, but I just can't get it to move away from the wall if you hold towards the wall. If I set moveVal to 0 then it works but the value stays at 0 until you input a new movement value via releasing the analog stick or key which just means the character won't move.
any ideas would be appreciated! Thanks :)