UnityGameProjectsCode / RelianceGame / Player Control / PlayerMove.cs
PlayerMove.cs
Raw
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);
    }
}