using UnityEngine; public class PlayerMove : MonoBehaviour { public float forwardSpeed; public float reverseSpeed; public float turnSpeed; private bool forward = false; private bool reverse = false; private bool turning = false; private float moveHorizontal; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { forward = false; reverse = false; turning = false; if (Input.GetButton("Turn")) //for turning movement turning = true; if (Input.GetButton("Forward/Reverse") && Input.GetAxis("Forward/Reverse") > 0.0f) //for forward movement forward = true; if (Input.GetButton("Forward/Reverse") && Input.GetAxis("Forward/Reverse") < 0.0f) //for reverse movement reverse = true; } private void FixedUpdate() { moveHorizontal = Input.GetAxis("Turn"); Vector3 m_EulerAngleVelocity = new Vector3(0.0f, moveHorizontal, 0.0f); Quaternion deltaRotation = Quaternion.Euler((m_EulerAngleVelocity * turnSpeed) * Time.deltaTime); if (forward) rb.AddForce(transform.right * forwardSpeed); if (reverse) rb.AddForce(transform.right * reverseSpeed); if (turning) rb.MoveRotation(rb.rotation * deltaRotation); } }