How to calculate the RPM/Rotation speed of an object?

I know that for WheelColliders you can use WheelCollider.rpm to determine the round per minute, but how do I do that for something that doesn’t have wheelcolliders attached? Say, I’ve got a GameObject with a cilinder attached (let’s call it CillinderRight), how do I calculate the RPM or rotationspeed of that cilinder?

I need to calculate the RPM/Rotation speed of the X axes only.

Well here’s a late answer, but you could use transform.InverseTransformDirection (yourRigidbody.angularVelocity).x, which gives you the rotation speed in radians. But you could convert that into degrees by multiplying it by Mathf.RadToDeg.

Uhhmm, well, a GameObject with a cylinder doesn’t rotate on it’s own. If it has a rigidbody attached it can roll due to gravity or force. The other way an object would rotate is to rotate it manually (set / increment the rotation yourself).

If you drive the rotation on your own you should actually know the speed since you’re driving it. If it’s a rigidbody it’s getting difficult. Rigidbodies are ALWAYS simulated in worldspace, so you don’t have a local rotation axis. The rigidbody have it’s angularVelocity which expresses the rotationspeed around each global-, world-axis.

Like shown in the example you can use angularVelocity.magnitude to get the rotation speed, but it’s the speed around the rotation axis which can be arbitrary aligned in the world. This way you can’t determine the direction of the rotation, just it’s magnitude.

AFAIK the velocity is in degrees per sec, but i’m not sure. I never used it so far.