Você já percebeu como alguns jogos fazem a derrota parecer importante?
Não aparece só um personagem sumindo. A tela escurece, surge uma animação, aparece um botão para voltar e tudo parece muito mais profissional.
Nesta aula você vai aprender como fazer tela da morte no Roblox criando um sistema de Game Over com respawn, usando GUI, animações e scripts em Lua.
O resultado é aquele efeito que dá sensação de jogo completo — igual aos jogos que as crianças e adolescentes mais gostam dentro do Roblox.
Ao final deste tutorial, você terá uma tela personalizada pronta para adaptar no seu próprio projeto.
🎥 Assista ao vídeo completo
O que você vai aprender nesta aula
✔️ Detectar quando o jogador morreu
✔️ Criar uma tela de morte personalizada
✔️ Adicionar animações e transições
✔️ Criar botão de respawn
✔️ Controlar o reaparecimento do jogador
✔️ Deixar seu jogo com aparência mais profissional
🎮 Seu filho gosta de Roblox? Ele também pode aprender a criar jogos.
No Programação For Kids, crianças e adolescentes aprendem programação criando projetos reais no Roblox Studio.
Curso com aulas , acesso quando quiser, apostilas e certificado.
Conhecer os Cursos →Scripts da Tela da Morte no Roblox
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")
local player = game.Players.LocalPlayer
local TweenService = game:GetService("TweenService")
local mainFrame= script.Parent.Frame
local white= script.Parent.Frame.White
local textButton = mainFrame.TextButton
local deathSound = script.Parent.Sound
local deadText = script.Parent.Frame.DeadText
local caveiraImage = script.Parent.Frame.ImageLabel
local buttonEnabled = false
local outTween = TweenInfo.new(0.5, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local outTween2 = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
local inTween = TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.In)
local inOutTween = TweenInfo.new(1, Enum.EasingStyle.Quad, Enum.EasingDirection.InOut)
local fadeOutTween = TweenInfo.new(0.5, Enum.EasingStyle.Sine, Enum.EasingDirection.Out)
local caveiraStartSize = UDim2.new(0.18, 0,0.18, 0)
local caveiraBigSize = UDim2.new(0.7, 0,0.7, 0)
local caveiraEndSize = UDim2.new(0.5, 0,0.5, 0)
local caveiraStartPos = UDim2.new(0.62, 0,0.5, 0)
local caveiraEndPos = UDim2.new(0.5, 0,0.5, 0)
local diedStartPos = UDim2.new(0.42, 0,0.5, 0)
local diedEndPos = UDim2.new(0.5, 0,0.5, 0)
local buttonStartPos = UDim2.new(0.5, 0,0.61, 0)
local buttonEndPos = UDim2.new(0.5, 0,0.6, 0)
local function prepararElementos()
mainFrame.Visible=true
mainFrame.BorderColor3 = Color3.fromRGB(12,0,0)
mainFrame.BackgroundTransparency=0
white.BackgroundTransparency=1
caveiraImage.Visible = true
deadText.Visible= true
textButton.Visible=true
textButton.BackgroundTransparency=0
end
local function onPlayerDied()
deathSound:Play()
prepararElementos()
TweenService:Create(mainFrame, outTween,{
BackgroundColor3=Color3.fromRGB(0,0,0)
}):Play()
TweenService:Create(caveiraImage, outTween,{
ImageTransparency=0.47, Size= caveiraBigSize
}):Play()
task.wait(0.5)
TweenService:Create(caveiraImage, inOutTween,{
Position = caveiraEndPos, Size = caveiraEndSize, ImageTransparency=0
}):Play()
TweenService:Create(deadText, inOutTween,{
Position=diedEndPos,
TextTransparency=0
}):Play()
task.wait(1.5)
textButton.Visible=true
TweenService:Create(textButton, outTween2,{
Position = buttonEndPos, TextTransparency=0
}):Play()
buttonEnabled=true
end
local function conectDiedEvent(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(onPlayerDied)
end
player.CharacterAdded:Connect(conectDiedEvent)
if player.Character then
conectDiedEvent(player.Character)
end
textButton.MouseButton1Up:Connect(function()
if buttonEnabled then
buttonEnabled=false
TweenService:Create(textButton, fadeOutTween,{
Position = buttonStartPos,
BackgroundTransparency=1,
TextTransparency=1
}):Play()
TweenService:Create(deadText, fadeOutTween,{
Position =diedStartPos, TextTransparency=1
}):Play()
TweenService:Create(caveiraImage, fadeOutTween,{
Position =caveiraStartPos,
Size=caveiraStartSize,
ImageTransparency=1
}):Play()
task.wait(0.5)
TweenService:Create(white, inTween,{
BackgroundTransparency =0
}):Play()
task.wait(0.6)
--- respawn servidor
RemoteEvent:FireServer()
print("Precisa respawn servidor")
TweenService:Create(white, outTween2,{
BackgroundTransparency =1
}):Play()
task.wait(1)
mainFrame.Visible =false
deadText.Visible=false
textButton.Visible=false
caveiraImage.Visible=false
deathSound:Stop()
end
end)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")
RemoteEvent.OnServerEvent:Connect(function(player)
if player and player.Character then
print("renasce")
player:LoadCharacter()
end
end)
Perguntas Frequentes (SEO)
Para fazer uma tela da morte no Roblox, normalmente você detecta quando o Humanoid chega em vida zero, abre uma GUI personalizada e cria um botão para controlar o respawn do jogador.
Para criar efeito Game Over no Roblox Studio, combine interface (GUI), animações, sons e controle de reaparecimento para deixar a experiência mais imersiva.
Sim. É totalmente possível criar uma tela da morte no Roblox usando apenas Roblox Studio e scripts em Lua.
Você pode criar um botão dentro da GUI e usar scripts para solicitar o reaparecimento do personagem quando o jogador clicar.
Adicionar elementos como tela de morte, sistema de missões, animações, efeitos sonoros e feedback visual ajuda o jogo a parecer mais completo.
Sim. Depois de criada, a tela da morte pode ser reutilizada em jogos de aventura, obby, terror, sobrevivência e praticamente qualquer gênero.
Sim. Com acompanhamento e exemplos passo a passo, crianças e adolescentes conseguem entender os conceitos e criar seus próprios sistemas.
🚀 Quer aprender Roblox do zero ao avançado?
Aprenda Lua, sistemas completos, monetização, interfaces e criação de jogos.
Ver Curso Completo →







