Rigidbody Character Jumps Higher With At Least 2 Collisions

Hi, and thanks for taking the time to read my question. Lately I’ve been working on a rigid-body character controller for my next project, so far everything but the jumping is working correctly. If I just jump then it works fine… but if the player’s rigid-body is colliding with any colliders then the player can jump just about twice as high (the more colliders, the higher the jump). The orientation of the colliders doesn’t seem to matter just so long as they are touching the player in some way. This is the only code in the controller relating to jumping, and is very similar to that used in the rigid-body walker on the wiki (which also suffers the same problem). Ive tweaked the physics material of the player and walls and neither makes any difference in the behavior. Any insight at all would be greatly appreciated, thanks.

Edit: Almost forgot [2743-bodycontroller_backup.txt|2743] is the full script i’m using.
Edit Again: I just noticed that my jump height is in fact being altered when I collide with just one collider, but by very little, it seems that my height exponentially increases with the number of colliders.

`
private float CalculateJumpVerticalSpeed () {

return Mathf.Sqrt(2 * JumpHeight * Gravity);

}

// Jump
if (JumpKey && !CamController.isShaking && !CamController.Cinematic) {

VelocityChange.y = CalculateJumpVerticalSpeed ();
VelocityChange.y = (VelocityChange.y - Velocity.y);

}

rigidbody.AddForce (VelocityChange, ForceMode.VelocityChange);

rigidbody.AddForce (new Vector3 (0, -Gravity * rigidbody.mass, 0));
`

Well, don’t you just hate it when you ask a question only to have an epiphany hours later that solves it? I’ve been playing with the physics variables, changing the methods used for jumping, and running full line graphs on just about every variable I could find trying to understand whats wrong, and nothing has worked. As it turns out all I had to do was add a rigid-body component to all of the existing game-objects with colliders and set them to kinematic. Maybe there is something in the unity documentation that I missed, but I never knew that rigid-bodies wouldn’t behave correctly if the objects they were colliding with didn’t have rigid-bodies of their own. Hopefully this helps someone in the future.

My answer to this is about 2 years too late :-), but may be useful for others who see this…

I propose that the issue here is the one I found here:

In short, if you are using Unity’s gravity you may be experiencing this issue. If you use a custom gravity as described in the above link you can avoid having to set a whole bunch of objects to be rigidbodies.

Hello guys, I had this same issue but I was unable to fix it. I use unity 2019.3 and I fixed it by using rigidbody.velocity instead of the AddForce();.

Something like this:
rigidbody.velocity = Vector2.up * jumpForce;