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);
GetComponent<Rigidbody>().AddTorque(torqueVector.normalized * accRate, ForceMode.Acceleration);
}
}
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!