So I made a system, using renderstepped, to rotate a 3d object above users head on the client.

So when a new player joins, it should call a new function using "PlayerAdded" event, and put a new 3d crystal over there head and start rotating it, repeatedly with renderstepped, It does this. How ever, each time a new player joins, somehow when a new function is called, it manipulates all the other ones, and causes the previous users crystals to rotate faster than it should, like it interreacts with other functions even though it should of just made a new function.

Here is my code.


local RunService = game:GetService("RunService")





function crystalSpinAdded (name, playeradded)
	
	
	
	
	
	
       local clone_crystal = game:GetService("ReplicatedStorage").Crystal
	
	
	
	
	
	
r = 0 	
	
	
	
	
	local new_rendersteppedcrystal
	
	
	

repeat wait() until workspace:FindFirstChild(name.Name)
	
	

	
clone_crystal:Clone().Parent = workspace:FindFirstChild(name.Name).Head
	
	
	
	
	
new_rendersteppedcrystal = RunService.Heartbeat:Connect(function()
		
		
		
		                                                                                    
		
		
		
if   game.Players:FindFirstChild(name.Name) then
			
			
			
	
			
			local crystal = workspace:FindFirstChild(name.Name).Head.Crystal
			


crystal.Anchored = false


			

r = r + 0.45
			
			crystal.CFrame = workspace:FindFirstChild(name.Name).Head.CFrame * CFrame.new(0, 2.65, 0.07) * CFrame.Angles(0, math.rad(r), 0)
			
				return true
				



		elseif 
			


			game.Players:FindFirstChild(name.Name) == nil then
			
	



			
			new_rendersteppedcrystal:Disconnect()
			
				return true
			
		end
		
	
	end)
	
	
	
	

end

	



game.Players.PlayerAdded:Connect(crystalSpinAdded)

1 comment

0

why is there so much space in between each line?