Skip to main content
Cleanup; deleted 15 characters in body
Source Link
DMGregory
  • 140.8k
  • 23
  • 257
  • 401

Random Unexpected velocity changes in unity

I have a character that moves with a rigidbody. 

When iI jump, iit looks findfine, but sometimes, my character boostboosts up while in the air and getshoots out of the map very fastquickly. I

I checked, and when it happens, it says the velocity is at about 210 or around it. why

Why is itthis happening and how can i fixiIfix it  ?`using System.Collections; using System.Collections.Generic; using UnityEngine;

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

public class playerManager : MonoBehaviour
{
    float xMovement;
    float zMovement;
    float xPosition;
    float yPosition;
    float zPosition;
    public float runningSpeed;
    public Animator animator;
    public Camera camera;
    public float cameraHeight;
    public float cameraAngle;
    public bool isOnGround;
    public float jumpForce;
    Rigidbody playerRigidbody;
    public float gravityMultiplier;
    Vector3 vel;
    public float airSpeed;
    public float groundSpeed;
    public bool canJump = true;
    
    void Start()
    {
        playerRigidbody = GetComponent<Rigidbody>();
        vel = playerRigidbody.velocity;
    }
    
    void Update()
    {
        
        xPosition = transform.position.x;
        yPosition = transform.position.y;
        zPosition = transform.position.z;
        PlayerMovements();      
        CameraManager();
    }
    
    
    public void CameraManager()
    {
        camera.transform.position = new Vector3(xPosition+cameraAngle,cameraHeight,zPosition+cameraAngle);
    }
    
    
    public void PlayerMovements()
    {
        //Jump
        if(Input.GetKeyDown(KeyCode.Space) & isOnGround == true & canJump == true)
        {
            runningSpeed = airSpeed;
            canJump = false;
            playerRigidbody.velocity = new Vector3(xMovement,0,zMovement);
            playerRigidbody.angularVelocity = Vector3.zero;
            playerRigidbody.constraints &= ~RigidbodyConstraints.FreezePositionY;
            playerRigidbody.AddForce(transform.up * jumpForce);
            playerRigidbody.drag = 0;

        }
        
        
        //Move the Character
        if(isOnGround == true)
        {
            xMovement = Input.GetAxis ("Horizontal");
            zMovement = Input.GetAxis ("Vertical");
            Vector3 distanceToMove = new Vector3(xMovement,0,zMovement);
            playerRigidbody.AddForce(distanceToMove * runningSpeed);
        }
    
        
        //Make the player face the direction he's going at
        transform.LookAt(new Vector3(xPosition+xMovement,yPosition,zPosition+zMovement));
        
        
        
        //Trigger Idle or Running Animations
        if(xMovement != 0 | zMovement != 0)
        {
            animator.SetBool("Run", true);
            animator.SetBool("Idle", false);
        }
        if((xMovement < 0.05f & xMovement > -0.05f) & (zMovement < 0.05f & zMovement > -0.05f))
        {
            animator.SetBool("Run", false);
            animator.SetBool("Idle", true);
        }           
    }
    
    
    public void OnCollisionEnter(Collision collidedOBJ)
    {
        if(collidedOBJ.gameObject.tag=="Finish")
        {
            Debug.Log(playerRigidbody.velocity);
            Debug.Log(runningSpeed);
        }
        if(collidedOBJ.gameObject.name == "Ground")
        {
            playerRigidbody.drag = 49;
            playerRigidbody.constraints &= RigidbodyConstraints.FreezePositionY|RigidbodyConstraints.FreezeRotationX|RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezeRotationZ;
            isOnGround = true;
            canJump = true;
            runningSpeed = groundSpeed;
        
            
        }
    }
 
    
    public void OnCollisionExit(Collision exitCollidedOBJ)
    {
        if(exitCollidedOBJ.gameObject.name == "Ground")
        {
            isOnGround = false;
            
        }
    } 

}

}

`

Random velocity changes in unity

I have a character that moves with rigidbody. When i jump, i looks find, but sometimes, my character boost up while in the air and get out of the map very fast. I checked, and when it happens, it says the velocity is at about 210 or around it. why is it happening and how can i fix it  ?`using System.Collections; using System.Collections.Generic; using UnityEngine;

public class playerManager : MonoBehaviour
{
float xMovement;
float zMovement;
float xPosition;
float yPosition;
float zPosition;
public float runningSpeed;
public Animator animator;
public Camera camera;
public float cameraHeight;
public float cameraAngle;
public bool isOnGround;
public float jumpForce;
Rigidbody playerRigidbody;
public float gravityMultiplier;
Vector3 vel;
public float airSpeed;
public float groundSpeed;
public bool canJump = true;

void Start()
{
    playerRigidbody = GetComponent<Rigidbody>();
    vel = playerRigidbody.velocity;
}

void Update()
{
    
    xPosition = transform.position.x;
    yPosition = transform.position.y;
    zPosition = transform.position.z;
    PlayerMovements();      
    CameraManager();
}


public void CameraManager()
{
    camera.transform.position = new Vector3(xPosition+cameraAngle,cameraHeight,zPosition+cameraAngle);
}


public void PlayerMovements()
{
    //Jump
    if(Input.GetKeyDown(KeyCode.Space) & isOnGround == true & canJump == true)
    {
        runningSpeed = airSpeed;
        canJump = false;
        playerRigidbody.velocity = new Vector3(xMovement,0,zMovement);
        playerRigidbody.angularVelocity = Vector3.zero;
        playerRigidbody.constraints &= ~RigidbodyConstraints.FreezePositionY;
        playerRigidbody.AddForce(transform.up * jumpForce);
        playerRigidbody.drag = 0;

    }
    
    
    //Move the Character
    if(isOnGround == true)
    {
        xMovement = Input.GetAxis ("Horizontal");
        zMovement = Input.GetAxis ("Vertical");
        Vector3 distanceToMove = new Vector3(xMovement,0,zMovement);
        playerRigidbody.AddForce(distanceToMove * runningSpeed);
    }

    
    //Make the player face the direction he's going at
    transform.LookAt(new Vector3(xPosition+xMovement,yPosition,zPosition+zMovement));
    
    
    
    //Trigger Idle or Running Animations
    if(xMovement != 0 | zMovement != 0)
    {
        animator.SetBool("Run", true);
        animator.SetBool("Idle", false);
    }
    if((xMovement < 0.05f & xMovement > -0.05f) & (zMovement < 0.05f & zMovement > -0.05f))
    {
        animator.SetBool("Run", false);
        animator.SetBool("Idle", true);
    }           
}


public void OnCollisionEnter(Collision collidedOBJ)
{
    if(collidedOBJ.gameObject.tag=="Finish")
    {
        Debug.Log(playerRigidbody.velocity);
        Debug.Log(runningSpeed);
    }
    if(collidedOBJ.gameObject.name == "Ground")
    {
        playerRigidbody.drag = 49;
        playerRigidbody.constraints &= RigidbodyConstraints.FreezePositionY|RigidbodyConstraints.FreezeRotationX|RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezeRotationZ;
        isOnGround = true;
        canJump = true;
        runningSpeed = groundSpeed;
    
        
    }
}
 

public void OnCollisionExit(Collision exitCollidedOBJ)
{
    if(exitCollidedOBJ.gameObject.name == "Ground")
    {
        isOnGround = false;
        
    }
}

}

`

Unexpected velocity changes in unity

I have a character that moves with a rigidbody. 

When I jump, it looks fine, but sometimes, my character boosts up while in the air and shoots out of the map very quickly.

I checked, and when it happens, it says the velocity is at about 210.

Why is this happening and how can iIfix it?

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

public class playerManager : MonoBehaviour
{
    float xMovement;
    float zMovement;
    float xPosition;
    float yPosition;
    float zPosition;
    public float runningSpeed;
    public Animator animator;
    public Camera camera;
    public float cameraHeight;
    public float cameraAngle;
    public bool isOnGround;
    public float jumpForce;
    Rigidbody playerRigidbody;
    public float gravityMultiplier;
    Vector3 vel;
    public float airSpeed;
    public float groundSpeed;
    public bool canJump = true;
    
    void Start()
    {
        playerRigidbody = GetComponent<Rigidbody>();
        vel = playerRigidbody.velocity;
    }
    
    void Update()
    {
        
        xPosition = transform.position.x;
        yPosition = transform.position.y;
        zPosition = transform.position.z;
        PlayerMovements();      
        CameraManager();
    }
    
    
    public void CameraManager()
    {
        camera.transform.position = new Vector3(xPosition+cameraAngle,cameraHeight,zPosition+cameraAngle);
    }
    
    
    public void PlayerMovements()
    {
        //Jump
        if(Input.GetKeyDown(KeyCode.Space) & isOnGround == true & canJump == true)
        {
            runningSpeed = airSpeed;
            canJump = false;
            playerRigidbody.velocity = new Vector3(xMovement,0,zMovement);
            playerRigidbody.angularVelocity = Vector3.zero;
            playerRigidbody.constraints &= ~RigidbodyConstraints.FreezePositionY;
            playerRigidbody.AddForce(transform.up * jumpForce);
            playerRigidbody.drag = 0;

        }
        
        
        //Move the Character
        if(isOnGround == true)
        {
            xMovement = Input.GetAxis ("Horizontal");
            zMovement = Input.GetAxis ("Vertical");
            Vector3 distanceToMove = new Vector3(xMovement,0,zMovement);
            playerRigidbody.AddForce(distanceToMove * runningSpeed);
        }
    
        
        //Make the player face the direction he's going at
        transform.LookAt(new Vector3(xPosition+xMovement,yPosition,zPosition+zMovement));
        
        
        
        //Trigger Idle or Running Animations
        if(xMovement != 0 | zMovement != 0)
        {
            animator.SetBool("Run", true);
            animator.SetBool("Idle", false);
        }
        if((xMovement < 0.05f & xMovement > -0.05f) & (zMovement < 0.05f & zMovement > -0.05f))
        {
            animator.SetBool("Run", false);
            animator.SetBool("Idle", true);
        }           
    }
    
    
    public void OnCollisionEnter(Collision collidedOBJ)
    {
        if(collidedOBJ.gameObject.tag=="Finish")
        {
            Debug.Log(playerRigidbody.velocity);
            Debug.Log(runningSpeed);
        }
        if(collidedOBJ.gameObject.name == "Ground")
        {
            playerRigidbody.drag = 49;
            playerRigidbody.constraints &= RigidbodyConstraints.FreezePositionY|RigidbodyConstraints.FreezeRotationX|RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezeRotationZ;
            isOnGround = true;
            canJump = true;
            runningSpeed = groundSpeed;
        
            
        }
    }
    
    public void OnCollisionExit(Collision exitCollidedOBJ)
    {
        if(exitCollidedOBJ.gameObject.name == "Ground")
        {
            isOnGround = false;
            
        }
    } 

}
edited title
Link
Samuel Fyckes
  • 372
  • 1
  • 5
  • 18

Random velocity changes in unity

Source Link
Samuel Fyckes
  • 372
  • 1
  • 5
  • 18

Random velocity changes

I have a character that moves with rigidbody. When i jump, i looks find, but sometimes, my character boost up while in the air and get out of the map very fast. I checked, and when it happens, it says the velocity is at about 210 or around it. why is it happening and how can i fix it ?`using System.Collections; using System.Collections.Generic; using UnityEngine;

public class playerManager : MonoBehaviour
{
float xMovement;
float zMovement;
float xPosition;
float yPosition;
float zPosition;
public float runningSpeed;
public Animator animator;
public Camera camera;
public float cameraHeight;
public float cameraAngle;
public bool isOnGround;
public float jumpForce;
Rigidbody playerRigidbody;
public float gravityMultiplier;
Vector3 vel;
public float airSpeed;
public float groundSpeed;
public bool canJump = true;

void Start()
{
    playerRigidbody = GetComponent<Rigidbody>();
    vel = playerRigidbody.velocity;
}

void Update()
{
    
    xPosition = transform.position.x;
    yPosition = transform.position.y;
    zPosition = transform.position.z;
    PlayerMovements();      
    CameraManager();
}


public void CameraManager()
{
    camera.transform.position = new Vector3(xPosition+cameraAngle,cameraHeight,zPosition+cameraAngle);
}


public void PlayerMovements()
{
    //Jump
    if(Input.GetKeyDown(KeyCode.Space) & isOnGround == true & canJump == true)
    {
        runningSpeed = airSpeed;
        canJump = false;
        playerRigidbody.velocity = new Vector3(xMovement,0,zMovement);
        playerRigidbody.angularVelocity = Vector3.zero;
        playerRigidbody.constraints &= ~RigidbodyConstraints.FreezePositionY;
        playerRigidbody.AddForce(transform.up * jumpForce);
        playerRigidbody.drag = 0;

    }
    
    
    //Move the Character
    if(isOnGround == true)
    {
        xMovement = Input.GetAxis ("Horizontal");
        zMovement = Input.GetAxis ("Vertical");
        Vector3 distanceToMove = new Vector3(xMovement,0,zMovement);
        playerRigidbody.AddForce(distanceToMove * runningSpeed);
    }

    
    //Make the player face the direction he's going at
    transform.LookAt(new Vector3(xPosition+xMovement,yPosition,zPosition+zMovement));
    
    
    
    //Trigger Idle or Running Animations
    if(xMovement != 0 | zMovement != 0)
    {
        animator.SetBool("Run", true);
        animator.SetBool("Idle", false);
    }
    if((xMovement < 0.05f & xMovement > -0.05f) & (zMovement < 0.05f & zMovement > -0.05f))
    {
        animator.SetBool("Run", false);
        animator.SetBool("Idle", true);
    }           
}


public void OnCollisionEnter(Collision collidedOBJ)
{
    if(collidedOBJ.gameObject.tag=="Finish")
    {
        Debug.Log(playerRigidbody.velocity);
        Debug.Log(runningSpeed);
    }
    if(collidedOBJ.gameObject.name == "Ground")
    {
        playerRigidbody.drag = 49;
        playerRigidbody.constraints &= RigidbodyConstraints.FreezePositionY|RigidbodyConstraints.FreezeRotationX|RigidbodyConstraints.FreezeRotationY|RigidbodyConstraints.FreezeRotationZ;
        isOnGround = true;
        canJump = true;
        runningSpeed = groundSpeed;
    
        
    }
}


public void OnCollisionExit(Collision exitCollidedOBJ)
{
    if(exitCollidedOBJ.gameObject.name == "Ground")
    {
        isOnGround = false;
        
    }
}

}

`