I was making a flying tool that had a unique flying system in it. Here's the code the code that is important

runservice.RenderStepped:Connect(function()
	if activatedFlight == true then
		game.ReplicatedStorage.Remotes.FlyCharacter:FireServer(hrp,inc,script.Parent.Handle.Weld,runservice.RenderStepped:Wait())
		script.Parent.Handle.Weld.C1 = script.Parent.Handle.Weld.C1 * CFrame.Angles(0,math.rad(rotationInc),0)
		if movingForward == true and equipped == true then
			inc = 0.5
			game.ReplicatedStorage.Remotes.FlyTween:FireServer(hrp,CFrame.new(hrp.Position, camera.CFrame.Position) * CFrame.Angles(math.rad(90),math.rad(180),0))
			
		elseif movingForward == false then
			inc = 0
			game.ReplicatedStorage.Remotes.FlyTween:FireServer(hrp,CFrame.new(hrp.Position, camera.CFrame.Position) * CFrame.Angles(0,math.rad(180),0))
		end
	elseif activatedFlight == false then
		rotationInc = 0
	end
end)

I have remoteEvents set up to make the player go to this direction and all

However, the character completely ignores collision and just phases right past any block! Even terrain!

I don't know why this is happening... Help please!