I have a wheel that spins with BodyAngularVelocity. This wheel is connected to an axis piece that can point in any direction to rotate said wheel. I am intentionally avoiding constraints.
The Goal
- The wheel should be able to rotate at a constant speed no matter which way it is facing in the world.
- If the axis pivots on an x,z plane, the BodyAngularVelocity should be able to calculate how much velocity is needed on each axis to keep spinning the same way.
- The velocity needs to be used as a velocity in world space, but based off the relative orientation of an axle part without changing the speed.
The Issue
- When rotated, the wheel either slows down or switches rotational directions entirely.
Current Attemps
- Multiplying by Right, Up, and Look Vectors
- :ToObjectSpace() and :ToWorldSpace() (However this may have not been done in the right order or with the right CFrame calculations)
Useful Information
- The wheel is a sphere part oriented at
90, -90, 0 - The axle is a 1x1x1 part orientated at
0, -90, 0 - An AngularVelocity x value makes the wheel rotate in the direction I desire (at current axle rotation)
- The axle only rotates in the direction the wheel points. It will not spin with the wheel.
- The surface of the axle that is forward is the Right surface.
- The ball should not be used in any calculations. Only the axle.

Please notify me of any additional information I should provide that would be helpful to solving this. I have spent the past 5 days trial and erroring this with no successful result.
