I found that it wasn’t working for me, so I used the character controller rotation in FixedUpdate to calculate the angular velocity. The whole calculation actually ended up being pretty complicated (took it from a Unity forum somewhere):

```
internal static Vector3 GetAngularVelocity(Quaternion foreLastFrameRotation, Quaternion lastFrameRotation)
{
var q = lastFrameRotation * Quaternion.Inverse(foreLastFrameRotation);
if (Mathf.Abs(q.w) > 1023.999f / 1024.0f)
return new Vector3(0, 0, 0);
float gain;
// handle negatives, we could just flip it but this is faster
if (q.w < 0.0f)
{
var angle = Mathf.Acos(-q.w);
gain = -2.0f * angle / ((float)Math.Sin(angle) * Time.deltaTime);
}
else
{
var angle = Mathf.Acos(q.w);
gain = 2.0f * angle / ((float)Math.Sin(angle) * Time.deltaTime);
}
return new Vector3(q.x * gain, q.y * gain, q.z * gain);
}
```

This does work for me. It didn’t work until I changed the first value to 1023.999f.