Search code examples
c#androidvisual-studiounity-game-enginewheelcollider

Wheel colliders rpm jumps naN


im making a andriod drifting game in unity (in c#), EVERYTINHG works 100% in the editor, but when i build it and test it on my andiod phone, the car reveres when the car is spawned, so i did some debugging and found that all 4 wheel coliders's rpm jump to "naN" when the car is ativated

Code:

public void Update()
    {
        GetInput();
        HandelMotors();
        HandelSteering();
        UpdateWeels();
        CheckDrifting();
        UpdateEffects();
        ChangeValues();
        ChangeUI();
    }

//---Alot of other code, ask if you want to get all the code---

private void HandelMotors()
    {
        FRWC.motorTorque = (VerticalInput * MotorForce) + (Turboing == true ? TurboBoostAmount : 0);
        FLWC.motorTorque = (VerticalInput * MotorForce) + (Turboing == true ? TurboBoostAmount : 0);

        FRWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
        FLWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
        RLWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
        RRWC.brakeTorque = IsBreaking ? MaxMotorBrake : 0;
    }

Code to stop the car when spawned

void StopCar() 
    {
        CarController.enabled = false;
        TrailL.enabled = false;
        TrailR.enabled = false;
        FRWC.motorTorque = 0;
        FLWC.motorTorque = 0;
        RRWC.motorTorque = 0;
        RLWC.motorTorque = 0;
        FRWC.brakeTorque = Mathf.Infinity;
        FLWC.brakeTorque = Mathf.Infinity;
        RRWC.brakeTorque = Mathf.Infinity;
        RLWC.brakeTorque = Mathf.Infinity;
        CarRig.velocity = Vector3.zero;
        CarRig.angularVelocity = Vector3.zero;
        CarRig.drag = 0;
        CarRig.angularDrag = 0;
        Invoke("EnalbeStuff", 1f);
void EnalbeStuff()
    {
        CarController.enabled = true;
        TrailL.enabled = true;
        TrailR.enabled = true;
    }
    }

Solution

  • Dont use "Mathf.Infinity" in your StopCar function, rather use "float.MaxValue", so it just look like this:

    void StopCar() 
    {
        CarController.enabled = false;
        TrailL.enabled = false;
        TrailR.enabled = false;
        FRWC.motorTorque = 0;
        FLWC.motorTorque = 0;
        RRWC.motorTorque = 0;
        RLWC.motorTorque = 0;
        FRWC.brakeTorque = float.MaxValue;
        FLWC.brakeTorque = float.MaxValue;
        RRWC.brakeTorque = float.MaxValue;
        RLWC.brakeTorque = float.MaxValue;
        CarRig.velocity = Vector3.zero;
        CarRig.angularVelocity = Vector3.zero;
        CarRig.drag = 0;
        CarRig.angularDrag = 0;
        Invoke("EnalbeStuff", 1f);
    }
    
    void EnalbeStuff()
    {
        CarController.enabled = true;
        TrailL.enabled = true;
        TrailR.enabled = true;
    }