How would I make this spin slower?

So I made a script where the object spins, but it spins way to fast, is there anyway I can reduce the amount of speed it gives?

This is the script:


wait()

script.Parent.CFrame = script.Parent.CFrame * CFrame.Angles(1, 0, 0)

end```
1 Like

wait()

script.Parent.CFrame = script.Parent.CFrame * CFrame.Angles(0.1, 0, 0)

end

Change 1 to 0.1.

Thank you so very much!

(30 chaar)

1 Like

Nevermind, they don’t spin at all now.

You should probably spin an object using math.pi and for loops. Using it, you can adjust the increment. If the increment is higher, it goes faster.

local defaultCFrame = script.Parent.CFrame -- // So we have the original rotation.
for i = 0, math.pi*2, 0.01 do -- // Adjusting the 0.01 to be a smaller number will slow down the speed.
     script.Parent.CFrame = defaultCFrame * CFrame.Angles(i, 0, 0)
     Heartbeat:Wait() -- // Make sure to define RunService.Heartbeat.
end

They still don not spin.

(30 chaar)

1 Like

If this is a server script, try heartbeat instead.

It’s a regular script within a mesh.

You can use math.rad() to convert the degrees to radians, if that helps. Radians are more accurate with rotating things, for example, if you wanted to rotate a part precisely 90 degrees, you would use math.rad(90). I don’t know about CFrame.Angles, but I mainly use fromEulerAnglesXYZ for rotating or spinning parts. If you want it to spin forever, you can do this in a while loop.

while true do
     wait()
     script.Parent.CFrame = script.Parent.CFrame * CFrame.fromEulerAnglesXYZ(math.rad(1),0,0)
end

To make it spin slower, change the 1 to a smaller number.

1 Like

It should spin perfectly. I am using the same code:

Code:

local defaultCFrame = script.Parent.CFrame -- // So we have the original rotation.
for i = 0, math.pi*2, 0.01 do -- // Adjusting the 0.01 to be a smaller number will slow down the speed.
     script.Parent.CFrame = defaultCFrame * CFrame.Angles(i, 0, 0)
     game:GetService("RunService").Heartbeat:Wait() -- // Make sure to define RunService.RenderStepped.
end

It works now, thank you so much!