- Home /
How do I limit the acceleration applied to my player's rigidbody?
I'm attempting to implement two new controls to the player in a game I'm working on. One key ("w") is meant to increase the maximum speed to the player to a specified degree, and the other key ("s") is meant to decrease the player's default speed by the same degree. However, when either key is pressed the force is far more extreme than anticipated, much to the detriment of the functionality I was going for. Upon acceleration, the player flies forward at a ridiculous speed, and upon deceleration, it slows down to the point it goes backwards. I think the speed is being multiplied, but I am not sure. How might I go about limiting the acceleration and deceleration? Thank you for your time.
using System.Threading;
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public Rigidbody rb;
public float forwardForce = 2000f;
public float sidewaysForce = 500f;
public float velocityChange = 500f;
public float trailOff = -1.0f;
public float fallDeath = -3.0f;
public GameObject Trail;
// Update is called once per frame
void FixedUpdate()
{
rb.AddForce(0, 0, forwardForce * Time.deltaTime);
if (Input.GetKey("a"))
{
rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (Input.GetKey("d"))
{
rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}
if (Input.GetKey("w"))
{
rb.AddForce(0, 0, velocityChange * Time.deltaTime, ForceMode.VelocityChange);
}
if (Input.GetKey("s"))
{
rb.AddForce(0, 0, -velocityChange * Time.deltaTime, ForceMode.VelocityChange);
}
if (rb.position.y < trailOff)
{
Trail.GetComponent<Renderer>().enabled = false;
}
if (rb.position.y < fallDeath)
{
FindObjectOfType<GameManager>().EndGame();
}
}
}
Your answer
Follow this Question
Related Questions
Car Accelerate Over Time. (JavaScript and RigidBody) 2 Answers
Simulating Fighter Jet Physics (with addForce () ) 2 Answers
Overcome drag 1 Answer
Cheap gravity script 2 Answers
Rigidbody.AddForce 2d movement without acceleration 2 Answers