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

Дверь с ключом

Связать предмет и препятствие

Дверь с ключом
Иллюстрация к теме занятия

Цель урока

Выдай ключ через атрибут игрока, открой дверь только после получения ключа.

Подготовка в Explorer

Part Key → ProximityPrompt → Script; Part LockedDoor → ProximityPrompt → Script

Пошаговая практика

  1. Создай объекты, соблюдая имена из схемы подготовки.
  2. Добавь обычный Script в указанный объект и вставь код.
  3. Нажми Play, открой Output и проверь поведение в одиночной игре.
  4. Проверь повторное взаимодействие и исправь ошибки в именах или структуре.

Пример Luau

-- Script внутри Key
local keyPrompt = script.Parent:WaitForChild("ProximityPrompt")
keyPrompt.Triggered:Connect(function(player)
    player:SetAttribute("HasDungeonKey", true)
    print(player.Name, "получил ключ")
end)

-- Другой Script внутри LockedDoor
local door = script.Parent
local doorPrompt = door:WaitForChild("ProximityPrompt")
doorPrompt.Triggered:Connect(function(player)
    if not player:GetAttribute("HasDungeonKey") then
        print("Сначала найди ключ")
        return
    end
    door.Transparency = 0.7
    door.CanCollide = false
end)

Что должно получиться

Без ключа дверь остаётся закрытой. После взаимодействия с Key дверь становится проходимой.

Если не работает

Код состоит из ДВУХ Script: часть для ключа и часть для двери. Их нельзя целиком вставлять в один Script.

Задание со звёздочкой

Сделай дверь персональной: её видимость и столкновения должны изменяться только для игрока с ключом (потребуется клиентская логика).

Покажи преподавателю

Продемонстрируй механику в Play, объясни, какая часть кода запускает действие, и покажи Output без ошибок.

Материал перед публикацией нуждается в проверке в Roblox Studio и учебных скриншотах.

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

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

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

Проверь себя

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

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

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

1. Где надёжнее хранить решение, есть ли у игрока ключ?
2. Что должен проверить сервер при запросе открыть дверь с ключом?
3. Почему нельзя доверять аргументу hasKey=true от клиента?
4. Что произойдёт при проверке if not hasKey then return end, если ключа нет?
5. Как проверить доступ с двумя игроками?