ProximityPrompt

Создаем Part, называем его Bed. Внутри создаем парту ProximityPrompt

local part = script.Parent
local prompt = part:WaitForChild("ProximityPrompt")
local animation = part:WaitForChild("SleepAnimation") -- имя Animation

local player = game.Players.LocalPlayer
local isSleeping = false
local sleepTrack

prompt.Triggered:Connect(function()
	if isSleeping then return end
	isSleeping = true

	local character = player.Character or player.CharacterAdded:Wait()
	local humanoid = character:WaitForChild("Humanoid")

	local animator = humanoid:FindFirstChildOfClass("Animator")
	if not animator then
		animator = Instance.new("Animator")
		animator.Parent = humanoid
	end

	sleepTrack = animator:LoadAnimation(animation)
	sleepTrack.Looped = true
	sleepTrack.Priority = Enum.AnimationPriority.Action
	sleepTrack:Play()

	-- Блокируем движение
	humanoid.WalkSpeed = 0
	humanoid.JumpPower = 0
	humanoid.AutoRotate = false
end)