Чекпоинт в Роблокс Студио можно сделать из обычного блока Part, к которому необходимо будет привязать скрипт с кодом (скопируйте чуть ниже).
Пошаговая инструкция
1. Активируйте окно Explorer во вкладке VIEW
2. Прейдите на вкладку HOME, создайте Part и растяните его при необходимости с помощью инструмента Scale
3. В окне Explorer найдите созданный Part и нажмите на + что бы добавить к нему Script
4. Пропишите в файле Script следующий код
local spawn = script.Parent
spawn.Touched:connect(function(hit)
if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") then
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
local checkpointData = game.ServerStorage:FindFirstChild("CheckpointData")
if not checkpointData then
checkpointData = Instance.new("Model", game.ServerStorage)
checkpointData.Name = "CheckpointData"
end
local checkpoint = checkpointData:FindFirstChild(tostring(player.userId))
if not checkpoint then
checkpoint = Instance.new("ObjectValue", checkpointData)
checkpoint.Name = tostring(player.userId)
player.CharacterAdded:connect(function(character)
wait()
character:WaitForChild("HumanoidRootPart").CFrame = game.ServerStorage.CheckpointData[tostring(player.userId)].Value.CFrame + Vector3.new(0, 4, 0)
end)
end
checkpoint.Value = spawn
end
end)
Теперь как только вы наступите на блок активируется чекпоинт и после смерти вы будите возрождены на нем.
Как работает код
Этот скрипт написан на языке Lua и предназначен для использования в игровом движке Roblox. Его цель — создание системы контрольных точек (чекпоинтов) для игроков. Вот как он работает:
Инициализация:
local spawn = script.Parent — задает переменную spawn как родительский объект для этого скрипта (предположительно, это контрольная точка).
Обработка столкновений:
spawn.Touched:connect(function(hit) — подключает функцию к событию Touched объекта spawn. Эта функция будет вызываться при касании игроком этой точки.
Внутри функции проверяется, является ли объект, коснувшийся точки, персонажем игрока: if hit and hit.Parent and hit.Parent:FindFirstChild("Humanoid") then.
Получение игрока и создание хранилища данных чекпоинтов:
local player = game.Players:GetPlayerFromCharacter(hit.Parent) — определяет игрока, чей персонаж коснулся контрольной точки.
local checkpointData = game.ServerStorage:FindFirstChild("CheckpointData") — ищет модель CheckpointData в ServerStorage. Если модель не найдена, создается новая модель: checkpointData = Instance.new("Model", game.ServerStorage), и ей присваивается имя CheckpointData.
Создание и обновление чекпоинта для игрока:
local checkpoint = checkpointData:FindFirstChild(tostring(player.userId)) — проверяет, есть ли уже сохраненный чекпоинт для данного игрока.
Если чекпоинт не найден, создается новый объект ObjectValue для хранения чекпоинта игрока.
Подписывается на событие CharacterAdded игрока, чтобы переместить его персонажа к сохраненному чекпоинту при возрождении: player.CharacterAdded:connect(function(character).
Обновляется значение чекпоинта на текущую контрольную точку checkpoint.Value = spawn.
Таким образом, этот скрипт позволяет игрокам сохранять свои позиции в игре, и при возрождении их персонажи будут телепортированы к последней сохраненной контрольной точке.