RotVelocity.Magnitude doesn't seem to be working properly

Alright thanks, I’ll try uploading it to YouTube. I used RotVelocity.Magnitude as Widgeon told me to do so. The fall is linear, and the wheels are spun using HingeConstraints with the ActuatorType set to Motor. I don’t think there should be any script errors as I’m just getting the RotVelocity.Magnitude every 0.25 seconds and printing it, and I also tried printing it every heartbeat. No unexpected physics are occurring. A lot of things should be cleared up once I upload the video, sorry for the inconvenience. I’m gonna go upload the video now, sorry if it takes some time as I have slow upload speeds.

Thank you for this information in the meantime! :smile:
I can maybe take a quick guess and maybe say HingeConstraints aren’t actually setting RotVelocity for some strange reason and perform their own physics calculations?

I’ll do some tests when I get home (probably in a few hours) and see if this is the case

1 Like

Hmm that’s possible. Thanks for your time! Sorry if this video takes about half an hour, that’s how slow my upload speeds are. Download speeds are alright.

I’m done uploading the video! Edited my original topic to include the link.

Hello,

I’m not an expert at vehicles, but perhaps try rotating your constraints to face the correct direction.
Otherwise, you can also use Coordinate Frame to vector your bearings to the correct direction.

Hope this helps.

part.RotVelocity:Dot(axis) gives the rotation along that axis, if that helps?

I’d do something like (wheel.RotVelocity - hub.RotVelocity):Dot(hub.CFrame:VectorToWorldSpace(Vector3.new(-1, 0, 0))) or something… Adjust the Vector3 as needed, I haven’t really read the thread but I hope this helps…

Mind placing some sort of checkered decal on the wheel to check if it’s actually rotating?

It most probably is, but I’ll still do it…

…Yep, it’s rotating just fine. That doesn’t seem to be the issue.

1 Like

Have you tried out my answer?

I’m trying it out right now, I’ll let you know of the results. Thanks!
I had a question by the way. About the :Dot()'s Vector3 value, if the wheel’s RotVelocity changes on the Z axis when it spins, should I use Vector3.new(0, 0, -1)?

Another question, what unit will the value printed be in?

Radians per second.

Use the axis of the hinge.

I use -1, 0, 0 here. You can see by the red arrows (indicating the X axis) that the vector points outward from the front left wheel.

Remember to use VectorToWorldSpace as the RotVelocity is absolute and the axis of rotation is not.

My chassis uses:

local wheelRotVelocity = wheel.RotVelocity:Dot(wheel.CFrame:VectorToWorldSpace(Vector3.new(-1, 0, 0)))

As a note to anyone who reads this, me and Terrodactyl played around with both the equations he provided on Discord, yet we did not get desired values.

On your chassis - something weird is going on there, because it works fine on mine.

It’s really strange, as it didn’t even seem to work properly on a loose cylinder. I’ll try again and let you know.

I can prepare a demo if you want?

1 Like

Sure! I’d love if you did so for me.

1 Like

Super confused about this, tried a load of things but still not getting a proper wheel RPM value. Please help ;(

If your wheels are on an axle, have you tried measuring the RotVelocity of the axle? Velocities can be weird and relative sometimes.

Thank you all for your help! I came up with this formula:
wheel.RotVelocity:Dot(-axle.CFrame.rightVector)
and it seems to be working!

2 Likes