# How To Accelerate/Decelerate Gradually With Torque GetAxis

Hi guys, I’m really sorry to be doing this but I’m really lost and I’ve been searching Google and Unity Answers for a couple of weeks for the answer to this problem.

Basically I have a ball rolling game that I apply torque to move the player, it’s using GetAxis Horizontal and Vertical, which I would have thought should have been easy to do this but everything I find on AddTorque or even AddForce for acceleration appears to only work for GetKey.insert arrow keys here and so-forth.

I’m needing a solution that uses GetAxis that essentially adds a good inertia to my acceleration and deceleration in any angle the axis can be pointed in at any given time.

Here is what I have, sorry I don’t have a half-baked solution in there somewhere, I’m literally at a loss:

``````void FixedUpdate()
{
if (onGround)
{

Vector3 torqueVector = (Input.GetAxis("Horizontal") * -mainCamera.transform.forward) + (Input.GetAxis("Vertical") * mainCamera.transform.right);
GetComponent<Rigidbody>().AddTorque(torqueVector.normalized * accRate * Time.deltaTime, ForceMode.Acceleration);

}
else
{
dir.x = ((Input.GetAxis("Vertical") * flySpeed) * Time.deltaTime);
dir.z = ((Input.GetAxis("Horizontal") * flySpeed) * Time.deltaTime);

GetComponent<Rigidbody>().velocity += (mainCamera.transform.right * dir.z + new Vector3(mainCamera.transform.forward.x, 0, Camera.main.transform.forward.z) * dir.x);

Vector3 torqueVector = (Input.GetAxis("Horizontal") * -mainCamera.transform.forward) + (Input.GetAxis("Vertical") * mainCamera.transform.right);

}
}
``````

The ‘else’ part is for when it’s in the air, the player is allowed to AddForce so they can move slightly in the air while also able to manipulate torque.

I hope one of you brilliant people out there can help me out, I’d be greatly appreciative!

I’ve done something similar, for rotating an object, using AddRelativeTorque based on mouse/keyboard input.

``````float myDesiredSpeed = maxYawSpeed * yawRotation