- Home /
Unity2D Wall Jump sends the player directly upwards sometimes.
Version: Unity 2019.4.14f1
I wanted wall jumping to feel good, so the player sticks to the wall for 0.1 seconds before they let go. However, now the player will sometimes ascend straight up the wall instead of jumping away from it, depending on the timing between pushing away from the wall and jumping off. Any idea why this might be?
I'm kind of new to Unity and C# in general so please be patient with me if it's something ridiculously obvious.
public void WallKick(bool wallJump)
{
//Grab wall
if (wallKickUpgrade1 && canGrab && !m_Grounded && !groundedLastUpdate && grabCooldown > 0)
{
//Player holding towards the wall and facing towards the wall
if (((Input.GetKey(GameManager.GM.left) || Input.GetAxisRaw("Horizontal") < 0) && transform.localScale.x == -1f) || ((Input.GetKey(GameManager.GM.right) || Input.GetAxisRaw("Horizontal") > 0) && transform.localScale.x == 1f))
{
//Sets the player to be grabbing
isGrabbing = true;
lastGrab = 0;
}
else
{
isGrabbing = false;
}
}
else if (lastGrab < 0.1f)
{
lastGrab += Time.deltaTime;
}
else
{
isGrabbing = false;
}
if (isGrabbing)
{
//Stops the player from moving while grabbing onto the wall
m_Rigidbody2D.velocity = Vector2.zero;
}
if (isGrabbing)
{
//Wall Jump
if (wallJump)
{
//The player loses control for 0.2 seconds and is pushed away from the wall
isGrabbing = false;
playerCanInput = false;
StartCoroutine(WallJumpCounter());
grabCooldown--;
if (lastGrab > 0)
{
m_Rigidbody2D.velocity = new Vector2(transform.localScale.x * 10f, m_JumpForce);
}
else
{
m_Rigidbody2D.velocity = new Vector2(-transform.localScale.x * 10f, m_JumpForce);
}
}
}
}
IEnumerator WallJumpCounter()
{
yield return new WaitForSeconds(0.1f);
playerCanInput = true;
}
Your answer
Follow this Question
Related Questions
Wall jump push force 1 Answer
How do deal with slopes in Unity2D with Physics-Based Movement? 0 Answers
2D Wall-Jump, preventing jumps/sticking on the same wall. 0 Answers
Physics2D checking if object goes out of OverlapArea 1 Answer
2D Platformer: Framerate causes inconsistency when falling off a platform. 0 Answers