Урок Roblox StudioЗанятие 7 / 8

Проверка финиша

Предотвратить пропуск этапов

Проверка финиша
Иллюстрация к теме занятия

Цель урока

Разрешать завершение маршрута только после последовательных контрольных точек.

Подготовка

Workspace → Folder Checkpoints → Part Checkpoint1, Checkpoint2, Checkpoint3; отдельно Part FinishPad. ServerScriptService → Script CourseProgress.

Пошаговая работа

  1. Создай три контрольные точки строго в порядке маршрута.
  2. Запусти сервер и коснись точек последовательно.
  3. Попробуй сначала финиш и пропуск второй точки: финиш не должен засчитываться.

Код Luau

В примерах с двумя скриптами помести части кода в указанные разные объекты.

local Players = game:GetService("Players")
local checkpoints = workspace:WaitForChild("Checkpoints")
local progress = {}
Players.PlayerAdded:Connect(function(player) progress[player] = 0 end)
Players.PlayerRemoving:Connect(function(player) progress[player] = nil end)
for i = 1, 3 do
    checkpoints:WaitForChild("Checkpoint" .. i).Touched:Connect(function(hit)
        local model = hit:FindFirstAncestorOfClass("Model")
        local player = model and Players:GetPlayerFromCharacter(model)
        if player and progress[player] == i - 1 then
            progress[player] = i
            player:SetAttribute("ReachedCheckpoint", i)
        end
    end)
end
workspace:WaitForChild("FinishPad").Touched:Connect(function(hit)
    local model = hit:FindFirstAncestorOfClass("Model")
    local player = model and Players:GetPlayerFromCharacter(model)
    if player and progress[player] == 3 then
        progress[player] = 4
        player:SetAttribute("FinishedCourse", true)
    end
end)

Проверяем результат

Финиш до трёх контрольных точек не засчитывается. Прогресс ведётся индивидуально.

Типичная ошибка

Не считай простое касание финишной детали достаточным доказательством прохождения карты.

Дополнительное задание

Добавь перезапуск трассы, который сбрасывает все атрибуты и progress.

Перед публикацией: протестируй код в Roblox Studio с двумя игроками и добавь собственные скриншоты редактора.

Проверь свою работу

Перед тестом убедись, что ты выполнил практику самостоятельно.

Эти отметки — личная памятка, они не влияют на звёзды.

Проверь себя

Ответь на вопросы урока. Успешный тест даёт одну звезду в личном кабинете.

⭐ Проверь свои знания

5 вопросов по теме урока. За 4 правильных ответа получишь звезду. Повторные попытки разрешены.

1. Игрок коснулся финиша, не пройдя КТ2. Что должен сделать сервер?
2. Какой порядок контрольных точек корректен?
3. Почему проверка только на клиенте недостаточна?
4. Что проверять при касании контрольной точки №3?
5. Как защититься от двух быстрых касаний финиша?