public void wheelsAnimation() { if (frontWheelsMesh != null && rearWheelsMesh != null) { float rotation_angle = 0; Transform FR, FL, RL, RR; //Meshes WheelCollider WFR, WFL, WRL, WRR; //Wheelcolliders //Gets the mesh wheels FL = frontWheelsMesh[LEFT].GetComponent <Transform>(); FR = frontWheelsMesh[RIGHT].GetComponent <Transform>(); RL = rearWheelsMesh[LEFT].GetComponent <Transform>(); RR = rearWheelsMesh[RIGHT].GetComponent <Transform>(); //Gets the WheelColliders WFL = frontWheels[LEFT].GetComponent <WheelCollider>(); WFR = frontWheels[RIGHT].GetComponent <WheelCollider>(); WRL = rearWheels[LEFT].GetComponent <WheelCollider>(); WRR = rearWheels[RIGHT].GetComponent <WheelCollider>(); /*Wheels rotation*/ //Sets the new steering float aux_oldsteer, aux_steer, angle; aux_oldsteer = oldSteering + maxSteeringAngle; aux_steer = currentSteering + maxSteeringAngle; angle = aux_steer - aux_oldsteer; FL.Rotate(Vector3.up, angle); //rotates for the steering FR.Rotate(Vector3.up, angle); oldSteering = currentSteering; //Updates the old steering for the next reajust //Calculates the angle for rotate the rear wheels float rpm = (rearWheels[LEFT].rpm + rearWheels[RIGHT].rpm) / 2; rotation_angle = (-rpm * 360) / 60 * Time.deltaTime; //Rotates the rear wheels RL.Rotate(Vector3.right, rotation_angle, Space.Self); RR.Rotate(Vector3.right, rotation_angle, Space.Self); FLL.transform.Rotate(Vector3.right, rotation_angle, Space.Self); //rotates for the speed FRR.transform.Rotate(Vector3.right, rotation_angle, Space.Self); /*Suspension effects*/ suspensionEffect(WFL, FL); suspensionEffect(WFR, FR); suspensionEffect(WRL, RL); suspensionEffect(WRR, RR); } }