//---------------------------------------------------------------------------------------------------------------------------------
var flWheelCollider : WheelCollider;
var frWheelCollider : WheelCollider;
var rlWheelCollider : WheelCollider;
var rrWheelCollider : WheelCollider;
var maxTorque= 260.0;
var maxBrakeTorque = 500.0;
var rigidbodycenterOfMassy = 0;
var currentSpeed : float = 0.0;
var maxSpeed : float = 200.0;
var reversemaxSpeed : float = -200.0;
private var isBraking : boolean = false;
//--------------------------------------------------------------------------------------------------------------------------------
var flWheel : Transform;
var frWheel : Transform;
var rlWheel : Transform;
var rrWheel : Transform;
//--------------------------------------------------------------------------------------------------------------------------------
var GuiSpeed : GUIText;
var guiSpeedPointer : Texture2D;
var guiSpeedDisplay : Texture2D;
//----------------------------------------------------------------------------------------------------------------------------------
var gearSpeed : int [ ];
function Start () {
//------------------------------------------------------------------------------------------------------------------------------
GuiSpeed.material.color = Color.green;
//-------------------------------------------------------------------------------------------------------------------------------
rigidbody.centerOfMass.y = rigidbodycenterOfMassy;
//-------------------------------------------------------------------------------------------------------------------------------
}
function FixedUpdate () {
//--------------------------------------------------------------------------------------------------------------------------------
currentSpeed = ((Mathf.PI * 2 *flWheelCollider.radius) * flWheelCollider.rpm * 60 / 1000);
currentSpeed = Mathf.Round(currentSpeed);
//--------------------------------------------------------------------------------------------------------------------------------
if (currentSpeed < maxSpeed currentSpeed > reversemaxSpeed){
flWheelCollider.motorTorque = maxTorque * Input.GetAxis(“Vertical”);
frWheelCollider.motorTorque = maxTorque * Input.GetAxis(“Vertical”);
}
else {
flWheelCollider.motorTorque = 0;
frWheelCollider.motorTorque = 0;
}
//--------------------------------------------------------------------------------------------------------------------------------
if ((currentSpeed>0)(Input.GetAxis(“Vertical”)<0) || ((currentSpeed<0)(Input.GetAxis(“Vertical”)>0))) {
isBraking = true;
}
else {
isBraking = false;
flWheelCollider.brakeTorque = 0;
frWheelCollider.brakeTorque = 0;
}
if(isBraking == true){
flWheelCollider.brakeTorque = maxBrakeTorque;
frWheelCollider.brakeTorque = maxBrakeTorque;
}
//--------------------------------------------------------------------------------------------------------------------------
if (currentSpeed < 120 currentSpeed >60){
flWheelCollider.steerAngle = 14 * Input.GetAxis(“Horizontal”);
frWheelCollider.steerAngle = 14 * Input.GetAxis(“Horizontal”);
}
else if (currentSpeed < 60){
flWheelCollider.steerAngle = 27 * Input.GetAxis(“Horizontal”);
frWheelCollider.steerAngle = 27 * Input.GetAxis(“Horizontal”);
}
else{
flWheelCollider.steerAngle = 5 * Input.GetAxis(“Horizontal”);
frWheelCollider.steerAngle = 5 * Input.GetAxis(“Horizontal”);
}
//--------------------------------------------------------------------------------------------------------------------------
GuiSpeed.text = currentSpeed.ToString();
//--------------------------------------------------------------------------------------------------------------------------
GearSound();
//-------------------------------------------------------------------------------------------------------------------------
}
function Update (){
RotateWheels();
SteerWheels();
}
//---------------------------------------------------------------------------------------------------------------------------------
function RotateWheels(){
flWheel.Rotate(flWheelCollider.rpm / 60 * 360 * Time.deltaTime,0,0);
frWheel.Rotate(frWheelCollider.rpm / 60 * 360 * Time.deltaTime,0,0);
rlWheel.Rotate(rlWheelCollider.rpm / 60 * 360 * Time.deltaTime,0,0);
rrWheel.Rotate(rrWheelCollider.rpm / 60 * 360 * Time.deltaTime,0,0);
}
function SteerWheels(){
flWheel.localEulerAngles.y = flWheelCollider.steerAngle - flWheel.localEulerAngles.z;
frWheel.localEulerAngles.y = frWheelCollider.steerAngle - frWheel.localEulerAngles.z;
}
function GearSound() {
audio.pitch = flWheelCollider.rpm*60/1000+1;
}
function SetCurrentGear(){
var gearNumber : int;
gearNumber = gearSpeed.length;
for (var i=0;i<gearNumber;i++){
if(gearSpeed*>currentSpeed){*
currentGear=i;
break;
}
}
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
function OnGUI () {
GUI.Box(Rect(0.0,0.0,140.0,140.0),guiSpeedDisplay);
GUIUtility.RotateAroundPivot(currentSpeed + 40,Vector2(70,70));
GUI.DrawTexture(Rect(0.0,0.0,140.0,140.0),guiSpeedPointer,ScaleMode.StretchToFill,true,0);
}[/QUOTE]
First of all,this is not realy my work.I got it from a Tutorial,but changed it a bit for better performence^^.
It is wary importent that you make the wheel collider exactly opothit from each other( something like flWheelCollider= -1,0.5,3 and frWheelCollider= 1,0.5,3)
Also this is a Work in progress Script,so there might be stuff in there which is not jet completed.
hope you can use this^^
please let me know