Hey guys, I’m basically new with scripting and I have a scripting problem that a I cannot solve in my java script. What I’m trying to do is to create a car simulation, there is still a lot that I will add to the script in the future to make it more realistic. Also, there is a tiny part of a commentary section that I plan to use with a steering wheel rather than the keyboard as my input.
Here is the code:
#pragma strict
var WheelLFCollider : WheelCollider;
var WheelRFCollider : WheelCollider;
var WheelLRCollider : WheelCollider;
var WheelRRCollider : WheelCollider;
var WheelLF : Transform;
var WheelRF : Transform;
var WheelLR : Transform;
var WheelRR : Transform;
var lowestSteerAtSpeed : float = 50;
var lowSpeedSteerAngle : float = 10;
var highSpeedSteerAngle : float = 1;
var decelerationSpeed : float = 30;
var maxTorque : float = 50;
var currentSpeed : float;
var topSpeed : float = 150;
var rb: Rigidbody;
function Start () {
rb = GetComponent.<Rigidbody>() ;
}
function FixedUpdate () {
Controle ();
}
function Update() {
WheelLF.Rotate(WheelLFCollider.rpm/60*360*Time.deltaTime,0,0);
WheelRF.Rotate(WheelRFCollider.rpm/60*360*Time.deltaTime,0,0);
WheelLR.Rotate(WheelLRCollider.rpm/60*360*Time.deltaTime,0,0);
WheelRR.Rotate(WheelRRCollider.rpm/60*360*Time.deltaTime,0,0);
WheelLF.localEulerAngles.y = WheelLFCollider.steerAngle - WheelLF.localEulerAngles.z;
WheelRF.localEulerAngles.y = WheelRFCollider.steerAngle - WheelRF.localEulerAngles.z;
}
function Controle () {
//var Accel = Input.GetAxisRaw("Accelerator") ;
//Debug.Log(Accel);
currentSpeed = 2*22/7*WheelLRCollider.radius*WheelLRCollider.rpm*60/1000;
currentSpeed = Mathf.Round(currentSpeed);
if (currentSpeed < topSpeed) {
WheelRRCollider.motorTorque = maxTorque * Input.GetAxis("Vertcial");
WheelLRCollider.motorTorque = maxTorque * Input.GetAxis("Vertical");
}
else {
WheelRRCollider.motorTorque = 0;
WheelLRCollider.motorTorque = 0;
}
if (Input.GetButton("Vertical")==false) {
WheelRRCollider.brakeTorque = decelerationSpeed;
WheelLRCollider.brakeTorque = decelerationSpeed;
}
else{
WheelRRCollider.brakeTorque = 0;
WheelLRCollider.brakeTorque = 0;
}
if (Input.GetAxis("Vertical")){
rb.velocity = Vector3(50,0,0);
}
var speedFactor = GetComponent<Rigidbody(rb.velocity.magnitude/lowestSteerAtSpeed);
var currentSteerAngle = Mathf.Lerp(lowSpeedSteerAngle,highSpeedSteerAngle,speedFactor);
currentSteerAngle *= Input.GetAxis("Horizontal");
WheelLFCollider.steerAngle = currentSteerAngle;
WheelRFCollider.steerAngle = currentSteerAngle;
}