Platforming character is jumping higher while walking
I know it makes no sense, and that's why I'm making a question here. Long story short, when doing a "hop" while not moving, my character jumps at a certain height, but when jumping while moving, she goes a few decimals of unit higher, and nothing in the code seems to be the reason. For an illustration, here's the chracter's height when jumping static(left) and jumping while moving(right)
For reference, here's the code that makes her jump:
public void Jump(float jumpHeight) {
float jumpSpeed = Mathf.Sqrt(-2 * Physics2D.gravity.y * jumpHeight);
if (isGrounded())
{
body.velocity = jumpSpeed * Vector2.up;
state = (state == PlatformState.STATE_IDLE)? PlatformState.STATE_HOP: PlatformState.STATE_JUMPING;
}
}
And here's the code that makes her walk:
void LateUpdate() {
//This line is to avoid "sliding" forever if she's pushed or slides on the corner of a platform; notice that the body's velocity.y is kept the same
body.velocity = new Vector2(Mathf.Lerp(body.velocity.x, 0f, 5f*Time.fixedDeltaTime), body.velocity.y);
if (state != PlatformState.STATE_IDLE && state != PlatformState.STATE_STUNNED && state != PlatformState.STATE_HOP)
{
transform.Translate(Vector2.right * facingDirection * walkSpeed * Time.fixedDeltaTime);
}
I can't make sense out of this, and I've looked pretty much everywhere, even tracing the rigid body speed while she jumps(both start at exactly 4.5, the precise speed needed to jump 1.0 high).
Your answer
Follow this Question
Related Questions
Physics2D, impersonate old RigidBody2D "Freeze Position" How? 1 Answer
2D Physics movement system is creating unexplained random variations. 0 Answers
Had to turn off gravity scale, but now player goes through walls 0 Answers
How to make arrows fly to user mouse position? 0 Answers
Collision sticking? 1 Answer