Creating a Spinning Wheel

You can use CFrame.Angles on the axis you want it to spin by a random starting speed, then you will decrease the angular speed over time at a rate you specify (deceleration):

Here’s some pseudo-code:

local r = 2
local v = math.random(20, 50)
local con

con = game:GetService("RunService").RenderStepped:Connect(function(dt)
    wheel:SetPrimaryPartCFrame(wheel:GetPrimaryPartCFrame() * CFrame.Angles(0, dt * v, 0)) -- if your wheel is a model
    v = math.max(v - (dt * r), 0)

    if v == 0 then
        con:Disconnect()
    end
end)

This is if you’re running it in a local script

EDIT: I clamped the angular speed at a minimum of 0 and disconnected the event when it reaches 0

4 Likes