I’m totally sure what went wrong, but I’ve been following Flat Tutorial’s car tutorial using my own model made in blender. It’s fairly simple, the wheels are just cylinders and the wheel colliders don’t have much more than a movement script attached.
Here are some pics of the problem:
Here is the code for the control:
var wheelFL : WheelCollider;
var wheelFR : WheelCollider;
var wheelBL : WheelCollider;
var wheelBR : WheelCollider;
var wheelFLTrans : Transform;
var wheelFRTrans : Transform;
var wheelBLTrans : Transform;
var wheelBRTrans : Transform;
var highestSpeed : float = 50;
var lowSpeedSteerAngle : float = 10;
var highSpeedSteerAngle : float = 1;
var decelerationSpeed : float = 10;
var maxTorque : float = 50;
function Start () {
rigidbody.centerOfMass += Vector3(0, 0, 1.0);
}
function FixedUpdate () {
wheelBR.motorTorque = maxTorque * Input.GetAxis("Vertical");
wheelBL.motorTorque = maxTorque * Input.GetAxis("Vertical");
wheelFR.motorTorque = maxTorque * Input.GetAxis("Vertical");
wheelFL.motorTorque = maxTorque * Input.GetAxis("Vertical");
if (Input.GetButton("Vertical") == false) {
wheelBR.brakeTorque = decelerationSpeed;
wheelBL.brakeTorque = decelerationSpeed;
wheelFR.brakeTorque = decelerationSpeed;
wheelFL.brakeTorque = decelerationSpeed;
}
else {
wheelBR.brakeTorque = 0;
wheelBL.brakeTorque = 0;
wheelFR.brakeTorque = 0;
wheelFL.brakeTorque = 0;
}
var speedFactor = rigidbody.velocity.magnitude/highestSpeed;
var currentSteerAngle = Mathf.Lerp(lowSpeedSteerAngle,highSpeedSteerAngle,speedFactor);
currentSteerAngle = Input.GetAxis("Horizontal");
wheelFL.steerAngle = 10 * currentSteerAngle;
wheelFR.steerAngle = 10 * currentSteerAngle;
}
