unity 3d script for car movement code example
Example: advanced car movement script unity
using UnityEngine;using System.Collections; public class CarController : MonoBehaviour { public WheelCollider WheelFL; public WheelCollider WheelFR; public WheelCollider WheelRL; public WheelCollider WheelRR; public Transform WheelFLtrans; public Transform WheelFRtrans; public Transform WheelRLtrans; public Transform WheelRRtrans; public Vector3 eulertest; float maxFwdSpeed = -3000; float maxBwdSpeed = 1000f; float gravity = 9.8f; private bool braked = false; private float maxBrakeTorque = 500; private Rigidbody rb; public Transform centreofmass; private float maxTorque = 1000; void Start () { rb = GetComponent<Rigidbody>(); rb.centerOfMass = centreofmass.transform.localPosition; } void FixedUpdate () { if(!braked){ WheelFL.brakeTorque = 0; WheelFR.brakeTorque = 0; WheelRL.brakeTorque = 0; WheelRR.brakeTorque = 0; } //speed of car, Car will move as you will provide the input to it. WheelRR.motorTorque = maxTorque * Input.GetAxis("Vertical"); WheelRL.motorTorque = maxTorque * Input.GetAxis("Vertical"); //changing car directionHere we are changing the steer angle of the front tyres of the car so that we can change the car direction. WheelFL.steerAngle = 30 * (Input.GetAxis("Horizontal")); WheelFR.steerAngle = 30 * Input.GetAxis("Horizontal"); } void Update() { HandBrake(); //for tyre rotate WheelFLtrans.Rotate(WheelFL.rpm/60*360*Time.deltaTime ,0,0); WheelFRtrans.Rotate(WheelFR.rpm/60*360*Time.deltaTime ,0,0); WheelRLtrans.Rotate(WheelRL.rpm/60*360*Time.deltaTime ,0,0); WheelRRtrans.Rotate(WheelRL.rpm/60*360*Time.deltaTime ,0,0); //changing tyre direction Vector3 temp = WheelFLtrans.localEulerAngles; Vector3 temp1 = WheelFRtrans.localEulerAngles; temp.y = WheelFL.steerAngle - (WheelFLtrans.localEulerAngles.z); WheelFLtrans.localEulerAngles = temp; temp1.y = WheelFR.steerAngle - WheelFRtrans.localEulerAngles.z; WheelFRtrans.localEulerAngles = temp1; eulertest = WheelFLtrans.localEulerAngles; } void HandBrake() { //Debug.Log("brakes " + braked); if(Input.GetButton("Jump")) { braked = true; } else { braked = false; } if(braked){ WheelRL.brakeTorque = maxBrakeTorque * 20;//0000; WheelRR.brakeTorque = maxBrakeTorque * 20;//0000; WheelRL.motorTorque = 0; WheelRR.motorTorque = 0; } }}