Чекпоинт в Роблокс Студио можно сделать из обычного блока 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
.
Таким образом, этот скрипт позволяет игрокам сохранять свои позиции в игре, и при возрождении их персонажи будут телепортированы к последней сохраненной контрольной точке.