示例#1
0
    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);
        }
    }