Recently I've been trying to make my Player tilt Corresponding to the Platform they are standing like what they do in an Unpopular Game Called Boost Vector and in Sonic Simulator. The method I used is:

-- Variables/Instances
local Player = script.Parent.Parent
repeat wait() until Player.Character.HumanoidRootPart
local Humrp = Player.Character.HumanoidRootPart

local Hitbox = Instance.new("Part",Humrp)
Hitbox.CFrame = Humrp.CFrame
Hitbox.CanCollide = false
Hitbox.Transparency = 1
Hitbox.Size = Vector3.new(3,6.2,3)

local Weld = Instance.new("WeldConstraint",Humrp)
Weld.Part0 = Humrp
Weld.Part1 = Hitbox

local Hit
local CanTurn = false

-- Functions
Hitbox.Touched:Connect(function(hit)
	if hit.Name == "FloorPart" then
		if Hit == hit then return end
		CanTurn = true
		Hit = hit
	end
end)

Hitbox.TouchEnded:Connect(function(hit)
	if hit.Name == "FloorPart" and hit == Hit then
		Hit = nil
		CanTurn = false
	end
end)

while true do
	wait(0.005) -- Added a wait() to avoid lagging
	if CanTurn == true then
		Humrp.CFrame = Humrp.CFrame*CFrame.Angles(math.rad(Hit.Orientation.X),0,math.rad(Hit.Orientation.Z))
	end
end