I have 10 wheel colliders on a tank to simulate tank treads.
When I read the rpm property, the first frame, the value is 0 but for the rest the value is NaN.
Here is how the colliders get configured by a script
![alt text][1]
[1]: /storage/temp/122449-capture.png
Here is the part of the script that creates them:
private void AddWheels()
{
wheels = new GameObject[wheelCount];
colliders = new WheelCollider[wheelCount];
meshes = new GameObject[wheelCount];
for (int i = 0; i < wheelCount; i++)
{
GameObject wheel = Instantiate(wheelPrefab);
wheel.name += " " + i;
wheel.transform.parent = transform;
wheel.transform.localPosition = new Vector3(0, -dimensions.y / 2, (dimensions.z / 2f) - ((dimensions.z * i) / (wheelCount - 1f)));
wheel.transform.localRotation = Quaternion.identity;
JointSpring spring = new JointSpring();
spring.spring = tankMass * 6.25f;
spring.damper = tankMass * .16f;
WheelCollider wheelCollider = wheel.GetComponent();
wheelCollider.radius = wheelRadius;
wheelCollider.suspensionSpring = spring;
wheelCollider.mass = tankMass / ((wheelCount - 2) * 2);
wheelCollider.motorTorque = 0;
wheelCollider.brakeTorque = 0;
colliders[i] = wheelCollider;
GameObject wheelMesh = wheel.transform.GetChild(0).gameObject;
wheelMesh.transform.localScale = new Vector3(wheelRadius * 2, .1f, wheelRadius * 2);
meshes[i] = wheelMesh;
wheels[i] = wheel;
}
colliders[0].transform.localPosition += Vector3.down * colliders[0].suspensionDistance;
colliders[colliders.Length - 1].transform.localPosition += Vector3.down * colliders[colliders.Length - 1].suspensionDistance;
colliders[0].suspensionDistance = 0;
colliders[colliders.Length - 1].suspensionDistance = 0;
colliders[0].transform.localPosition += Vector3.up * dimensions.y;
colliders[colliders.Length - 1].transform.localPosition += Vector3.up * dimensions.y;
foreach (GameObject wheel in wheels)
{
wheel.SetActive(true);
}
foreach(WheelCollider collider in colliders)
{
collider.enabled = true;
}
}
Enabling and disabling the colliders in the editor fixes the readings, but doing it with a script does nothing.
If anyone has ANY idea on wtf is happening or knows the inner workings of the wheel collider pls let me know.
Is it just me or are wheel colliders a bit buggy? I've had issues with the brake torque not actually being set to 0 when done so in a script.
↧