expecting (, found 'ShiftGears'

// These variables allow the script to power the wheels of the car. var frontLeftCollider : WheelCollider; var frontRightCollider : WheelCollider; var backLeftCollider : WheelCollider; var backRightCollider : WheelCollider;

// These variables are for the gears, the array is the list of ratios. The script // uses the defined gear ratios to determine how much torque to apply to the wheels. var GearRatio : float[]; var DifferentialRatio : float = 3.21; var CurrentGear : int = 0;

// These variables are just for applying torque to the wheels and shifting gears. // using the defined Max and Min Engine RPM, the script can determine what gear the // car needs to be in. var EngineTorque : float = 600.0; var MaxEngineRPM : float = 7000.0; var MinEngineRPM : float = 1000.0; var EngineRPM : float = 0.0;

var FrontWheelDrive : int = 1; var RearWheelDrive : int = 1;

// Center Of Mass var COMX : float = 0; var COMY : float = -0.2; var COMZ : float = 0.5;

function Start () { // I usually alter the center of mass to make the car more stable. I'ts less likely to flip this way. rigidbody.centerOfMass.x = COMX; rigidbody.centerOfMass.y = COMY; rigidbody.centerOfMass.z = COMZ; }

function Update () { //update center of mass rigidbody.centerOfMass.x = COMX; rigidbody.centerOfMass.y = COMY; rigidbody.centerOfMass.z = COMZ;

// This is to limith the maximum speed of the car, adjusting the drag probably isn't the best way of doing it,
// but it's easy, and it doesn't interfere with the physics processing.
rigidbody.drag = rigidbody.velocity.magnitude / 250;

// Compute the engine RPM based on the average RPM of the two wheels, then call the shift gear function
EngineRPM = Mathf.Abs(backLeftCollider.rpm + backRightCollider.rpm)/2 * GearRatio[CurrentGear] * DifferentialRatio;
if ( EngineRPM>10000) {EngineRPM =10000;}
if ( EngineRPM<0) {EngineRPM =0;}
ShiftGears();

if (FrontWheelDrive) {
    frontLeftCollider.motorTorque = -EngineTorque * GearRatio[CurrentGear]*DifferentialRatio * Input.GetAxis("Vertical") *1000;
    frontRightCollider.motorTorque = -EngineTorque * GearRatio[CurrentGear]*DifferentialRatio * Input.GetAxis("Vertical") *1000;
    }

if (RearWheelDrive) {
    backLeftCollider.motorTorque = -EngineTorque * GearRatio[CurrentGear] * DifferentialRatio * Input.GetAxis("Vertical") *100;
    backRightCollider.motorTorque = -EngineTorque * GearRatio[CurrentGear] * DifferentialRatio * Input.GetAxis("Vertical") *100;
    }
if (FrontWheelDrive) {
// the steer angle is an arbitrary value multiplied by the user input.
frontLeftCollider.steerAngle = 35 * Input.GetAxis("Horizontal");
frontRightCollider.steerAngle = 35 * Input.GetAxis("Horizontal");
}

function ShiftGears() { // this funciton shifts the gears of the vehcile, it loops through all the gears, checking which will make // the engine RPM fall within the desired range. The gear is then set to this "appropriate" value. if ( EngineRPM >= MaxEngineRPM ) { var AppropriateGear : int = CurrentGear;

    for ( var i = 0; i < GearRatio.length; i ++ ) {
        if ( Mathf.Abs(backRightCollider.rpm + backLeftCollider.rpm)/2 * GearRatio_*DifferentialRatio < MaxEngineRPM ) {_
 *AppropriateGear = i;*
 *break;*
 *}*
 *}*
 *CurrentGear = AppropriateGear;*
*}*
*if ( EngineRPM <= MinEngineRPM ) {*
 *AppropriateGear = CurrentGear;*
 *for ( var j = GearRatio.length-1; j >= 0; j -- ) {*
 _if ( Mathf.Abs(backRightCollider.rpm + backLeftCollider.rpm)/2 * GearRatio[j]*DifferentialRatio > MinEngineRPM ) {_
 *AppropriateGear = j;*
 *break;*
 *}*
 *}*
 *CurrentGear = AppropriateGear;*
*}*
*```*
*<p>}</p>*
*<p>The error seems to be where - Function shift gear is</p>*

You haven't closed your update function. Add a curly bracket to the end of it before your ShiftGears function.

Tip: When pasting code to Unity Answers. First copy and paste the code to Unity Answers. Then highlight all of the pasted code. Then press the code format button.