Cómo crear un sistema de checkpoint en Roblox paso a paso (con imágenes y scripts)
¿Te gustaría que los jugadores de tu juego puedan guardar su progreso y reaparecer en el último punto que tocaron? Eso se logra con un sistema de checkpoints. En esta guía aprenderás cómo crear uno totalmente funcional en Roblox Studio, incluyendo la parte visual y el código necesario.
¿Qué es un checkpoint?
Un checkpoint es un punto en el mapa que guarda el progreso del jugador. Si muere o reinicia el personaje, aparecerá en ese lugar en lugar de volver al inicio del mapa. Es muy útil para juegos de tipo obby, parkour, aventuras y exploración.
Paso 1: Prepara tu escenario
Abre tu juego en Roblox Studio. Asegúrate de tener un mapa con varias plataformas o secciones donde colocarás los checkpoints.
Paso 2: Crea los checkpoints
- En el panel de Explorer, haz clic derecho sobre Workspace y selecciona Folder.
- Renómbralo como Checkpoints.
- Dentro de ese folder, agrega partes (blocks) que actuarán como checkpoints. Ponles nombre numérico (1, 2, 3...)
Puedes cambiar el color y tamaño de los bloques para que se vean llamativos.
Paso 3: Agrega el script del servidor
Haz clic derecho sobre ServerScriptService y selecciona Script. Pega el siguiente código:
local Rs = game:GetService("ReplicatedStorage")
local Event = Instance.new("Folder", Rs)
Event.Name = "Events"
local CheckPointEvent = Instance.new("RemoteEvent", Event)
CheckPointEvent.Name = "CheckPointEvent"
local SoundEnabled = true
game.Players.PlayerAdded:Connect(function(Player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = Player
local Level = Instance.new("IntValue")
Level.Name = "Level"
Level.Value = 0
Level.Parent = leaderstats
local CheckpointsFolder = workspace:WaitForChild("Checkpoints")
for _, Checkpoint in pairs(CheckpointsFolder:GetChildren()) do
Checkpoint.Touched:Connect(function(Hit)
local Character = Hit.Parent
if Character and Character:FindFirstChild("Humanoid") then
local PlayerHit = game.Players:GetPlayerFromCharacter(Character)
if PlayerHit and PlayerHit.leaderstats.Level.Value == tonumber(Checkpoint.Name) - 1 then
PlayerHit.leaderstats.Level.Value = tonumber(Checkpoint.Name)
CheckPointEvent:FireClient(PlayerHit, Checkpoint)
end
end
end)
end
Player.CharacterAdded:Connect(function(Character)
wait()
local root = Character:WaitForChild("HumanoidRootPart")
local value = Player:WaitForChild("leaderstats"):WaitForChild("Level").Value
local target = CheckpointsFolder:FindFirstChild(tostring(value))
if target then
root.CFrame = target.CFrame + Vector3.new(0, 3, 0)
end
end)
end)
Este script guarda el checkpoint tocado y reposiciona al jugador cuando reaparece.
Paso 4: Crea la parte del cliente
- Ve a StarterPlayer > StarterPlayerScripts
- Agrega un LocalScript y pega este código:
local Event = game.ReplicatedStorage:WaitForChild("Events"):WaitForChild("CheckPointEvent")
Event.OnClientEvent:Connect(function(Checkpoint)
local part = Instance.new("ParticleEmitter", Checkpoint)
part.Color = ColorSequence.new(Color3.new(0,1,0))
part.Lifetime = NumberRange.new(1)
part.Rate = 200
wait(1)
part.Enabled = false
wait(1)
part:Destroy()
end)
Este código visualiza un efecto cuando el jugador toca un checkpoint.
Consejo adicional
Puedes agregar sonidos, luces o GUI que indiquen que un checkpoint ha sido guardado. Usa RemoteEvents para comunicarte entre el servidor y el cliente.
Prueba tu sistema
Haz clic en "Play" y toca un checkpoint. Luego resetea tu personaje. Deberías reaparecer justo en el checkpoint que tocaste. ¡Listo!
Conclusión
Con un sistema de checkpoints bien implementado, tu juego será mucho más divertido y justo para los jugadores. Ahora puedes construir niveles más largos sin preocuparte de que los usuarios se frustren al morir. ¡Sigue creando!
Publicar un comentario