How to make the player spin but still be able to move

my script is in startercharacterscripts for testing purposes
this is my script
it works as intended but the player is practically unable to move

local root = script.Parent:WaitForChild("HumanoidRootPart")
local speed = 0.05

while task.wait() do
	root.CFrame = root.CFrame * CFrame.Angles(0,speed,0)
end

i cannot figure it out

disable “Humanoid.AutoRotate” while the script is running
edit: oh waeit that isnt the actual problem

im not used to messing with cframes on humanoids, as i mainly use bodygyros on them, but try changing from root.CFrame to root.Orientation to check if it the player is able to move again

can you just make a spinning animation and set it to be an action and play the animation when you click a button or key

you can also change the animation speed to make it faster or slower

that would be a fix but in terms of scripting it probably isn’t configurable enough. what if he wants to smoothly start the spinning? then it would be a problem if he used animation for that

this is actually exactly whst i wanted and it works thanks