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...)
Checkpoints en Roblox Studio

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.

Checkpoint visual Roblox

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!

Checkpoint activado en Roblox Botón Reclama Reclama ahora

Post a Comment

Artículo Anterior Artículo Siguiente