My character jumps really slowly and falls back down really slowly

TLDR: I dont think its a script or inspector problem, but rather something from Unity itself that I cant find to adjust

Im using Unity 2018.4.1f1

Even my platform falls really slowly. Its all so odd since another game I have the exact same stuff and its fine with that one, everything is at the typical speed you’d expect. No idea why this one is so slow for.

I have to make certain things bigger too just to make it the same size as the other game. For example, the ground check radius in both games was set to 0.2. you can see it in one game, but its still way too tiny in the other game, where you can’t see it. So I had to make the radius bigger just to get it to the same size as 0.2 in the other game. Here’s the images below of what I am talking about. Here, the size of both will be 0.2: Both are approximately zoomed in the same amount. Look how tiny that is (top image). I had to increase the size a lot to match the 0.2 size of the other game, which Unity seems normal there.

6193698--679308--upload_2020-8-11_18-7-27.png

6193698--679305--upload_2020-8-11_18-6-18.png

So I don’t know why this game is so messed up for, from that to the slow jumping and what not. The characters are the exact same size though.

But anyway, theres the script and Inspector from the game where its all messed up on:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WizardPlayerController : MonoBehaviour
{

    private Renderer rend;
    private Color colorToTurnTo = Color.blue;

    float dirX;
    public float runSpeed;
    public float spead = 2f;
    public float jumpForce = 16.0f; //how high the character jumps
    private float movementInputDirection; //the key being pressed down


  
private int facingDiection = 1; //-1 is left.  1 is right


    private int amountOfJumpsLeft;

    private bool canMove;

    private Rigidbody2D rb;

     private bool isFacingRight = true;

    private bool canJump;

    private bool isGrounded;

    private bool isAttemptingToJump;

    private bool canFlip;

    private bool checkJumpMultiplier;

    public Transform groundCheck;
    public float checkRadius;
    public LayerMask whatIsGround;

    private float moveHorizontal;
    private float moveVertical;

public float movementSpeed = 10.0f;

public float movementForceInAir; //add force to character as its attempting to move in the air

    public float groundCheckRadius;

    public LayerMask WhatIsGround;

private Vector2 speed;



    //-----------------------------------------------------------------------------


    //--------------------------------------------------------------
    void Start()
    {

        rb = GetComponent<Rigidbody2D>();
      
    }
//---------------------------------------------------------

    private void Update()
    {
        CheckInput();
        CheckMovementDirection();
        CheckIfCanJump();
        RunSpeed();

    }


    //---------------------------------------------------------------------------------
    private void CheckInput()
    {

        movementInputDirection = Input.GetAxisRaw("Horizontal");

        if (Input.GetButtonDown("Jump"))

        {
            Jump();
        }
    }
    private void Jump()
    {

        if (canJump)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    
    }
    //-----------------------------------------------------------------------------------
    private void ApplyMovement()
    {
        rb.velocity = new Vector2(movementSpeed * movementInputDirection, rb.velocity.y);
    }


    //-----------------------------------------------------------------------------

    private void Flip()

    {


        facingDiection *= -1;  //facing left.  every time we flip the character it will go back and forth between -1 and 1
        isFacingRight = !isFacingRight;
        transform.Rotate(0.0f, 180.0f, 0.0f); //x, y, z


    }
//------------------------------------------------------------------------------------------------------------

   private void FixedUpdate()
    {
        RunSpeed();
       ApplyMovement();
        CheckSurroundings();
   

    }
    //------------------------------------------------------------

private void CheckSurroundings()
    {
        isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundCheckRadius, whatIsGround);
    }

//---------------------------------------------------------------------------

    private void CheckIfCanJump()
    {
        if(isGrounded && rb.velocity.y <= 0)
        {
            canJump = true;
        }
        else
        {
            canJump = false;
        }
    }
 
  
  
//--------------------------------------------------------------------------



   //----------------------------------------------------------------------------------

    private void CheckMovementDirection() //moves him right or left.  flips him so he faces the direction he is going in
    {

        if (isFacingRight && movementInputDirection < 0)
        {

            Flip();

       }

        else if (!isFacingRight && movementInputDirection > 0) //because he is moving left while facing right
        {
            Flip();
        }

    }


//------------------------------------------------------------------------------------------------------------------------------------

    private void RunSpeed()


    {
        if (Input.GetKey(KeyCode.LeftShift))

            spead = 10f;

        else
            spead = 2f;


    }


   //---------------------------------------------------------------------------------------------------------------------------
    private void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(groundCheck.position, groundCheckRadius);
    }

}

6193698--679314--upload_2020-8-11_18-17-35.png
6193698--679311--upload_2020-8-11_18-17-11.png

Did you check the physics setting in the editor?

I usually prefer to just force-set my game to the desired physics for a given level. That way I know it is correct, even if it gets changed elsewhere transiently. It’s basically a global state so if you want it a particular value, you should set it as part of initializing.

If 0.2 game units looks a different size on your screen in one game versus the other, that pretty much definitionally means you are NOT zoomed in the same amount. Different zoom levels would presumably explain your gravity issues, too.

What exactly convinced you that you are equally zoomed-in?

Also, I am assuming that you mean 0.2 units in worldspace. If you are using a local transform’s coordinate space, and that transform (or any of its ancestors) has a scale value other than 1, then obviously it isn’t an apples-to-apples comparison.

just checked physics and physics 2D and everything is the same on both games. So odd that in one game its speed is normal and the other its slow.

I dont know what else I could check

As Anti suggested above, check for the scale of things.

Drop a basic Unity cube into the scene (not parented)

Does it look the same (relatively) in each game?

I can’t even see it on one of the games (the one where the jumping is slow) but I can see it as plain as day on the other game (the game with the normal jumping speed)

I zoomed in with my mouse wheel. Had to zoom it in really far to see it when the radius was 0.2 unlike the other game

its not really game breaking per se if you can time the jump just right to avoid an enemy lol. But it certainly is sales breaking.

That tells you that you’re zoomed way out and/or all your other objects are really big. All objects, regardless of mass, fall at the same rate (assuming no friction), but large ones will appear to fall slower, especially if they are just big versions of normal-sized objects. Think of a giant knocking a huge apple off the top of a building compared to a person knocking a normal one off a table. Same fall rate, but the big one has to fall 10 stories, so it takes longer and looks “slower”.

Not sure if that’s your issue without more info, but it seems like it with the cube test.

As a workaround for now, to match the jumping speed of the game with the faster jumping, I had to greatly increase the gravity force and jump force values. Gravity force from 4 to 200 and jump force from 16 to around 1200.

Sounds like a large mismatch of sizes (and possibly masses) between the games. Check the scales carefully, you should find they are very different. Remember to only check scales of parent GameObjects, not child objects, which are relative to their parents.