I'm trying to rotate an object using BodyAngularVelocity but whatever I tried it always rotates the object according to global space.
https://gyazo.com/148dd94c0f16054a23ef417af8bb367b
local Crescent = AccDisksPRJ:Clone()
local PassedCF = CFrame.new(RootPart.CFrame.p, Mouse.Hit.p)
Crescent.CFrame = PassedCF * GBLSettings.SpawnOffset * CFrame.Angles(0,0,Rotation)
local Velocity = Instance.new("BodyVelocity")
local PassedVL = (Mouse.Hit.p-RootPart.Position).unit
Velocity.Velocity = PassedVL * 5
Velocity.MaxForce = Vector3.new(1,1,1) * math.huge
Velocity.P = 10000
Velocity.Parent = Crescent
local AgVelocy = Instance.new("BodyAngularVelocity")
AgVelocy.AngularVelocity = Vector3.new(0,-15,0)
AgVelocy.MaxTorque = Vector3.new(1,1,1) * math.huge
AgVelocy.P = 10000
AgVelocy.Parent = Crescent
Crescent.Parent = workspace
What I want to achieve is to have the objects rotate along its own axis. I know I'd have to use one of the CFrame methods such as :vectorToWorldSpace but I do not know how to use it in my case.

3 comments
well, rotating along an object's own axis is object space, not world space
Also, it isn't recommended to use BodyAngularVelocity if you want a constant rotation, it is recommended that you use a bodyGyro for that
No, BodyGyro causes the part to only look at a certain direction. AngularVelocity causes it to rotate at a constant velocity.