← Все практические скрипты
Мини-проекты · Уверенный · 35 мин

Мини-проект: соберите три цвета

Найдите красный, синий и зелёный кристаллы, чтобы открыть дверь.

Иллюстрация: Мини-проект: соберите три цвета
🎯 Что получится

Задание на поиск трёх разных объектов и открытие двери с помощью ProximityPrompt.

1. Подготовьте объект

Где разместить: Несколько скриптов — смотрите инструкцию и отдельные блоки кода

Создайте в Workspace папку ColorCrystals с тремя Part по именам Red, Blue, Green. Установите Anchored=true и CanTouch=true.
Добавьте Part ColorDoor (Anchored=true, CanCollide=true).
Создайте Script ColorQuest в ServerScriptService и вставьте код.
Каждый игрок должен коснуться всех трёх кристаллов; затем он может нажать E рядом с дверью. Открытие общей двери временное.

Карта файлов в Explorer

Это пути для скриптов из блоков кода ниже. Остальные объекты создайте по инструкции.

└── ServerScriptService
    └── ColorQuest (Script)

2. Вставьте код

ServerScriptService/ColorQuest (Script)
local Players = game:GetService("Players")
local folder = workspace:WaitForChild("ColorCrystals")
local door = workspace:WaitForChild("ColorDoor")
local required = {Red = true, Blue = true, Green = true}
local progress = {}
local prompt = Instance.new("ProximityPrompt")
prompt.ActionText = "Открыть дверь"
prompt.MaxActivationDistance = 10
prompt.Parent = door
local busy = false
for name in pairs(required) do
    local crystal = folder:WaitForChild(name)
    crystal.Touched:Connect(function(hit)
        local model = hit:FindFirstAncestorOfClass("Model")
        local player = model and Players:GetPlayerFromCharacter(model)
        if not player then return end
        progress[player] = progress[player] or {}
        progress[player][name] = true
    end)
end
prompt.Triggered:Connect(function(player)
    if busy then return end
    local found = progress[player] or {}
    for name in pairs(required) do if not found[name] then return end end
    busy = true
    prompt.Enabled = false
    progress[player] = {} -- одно выполнение на открытие
    door.CanCollide = false
    door.Transparency = 0.75
    task.wait(6)
    door.CanCollide = true
    door.Transparency = 0
    prompt.Enabled = true
    busy = false
end)
Players.PlayerRemoving:Connect(function(player) progress[player] = nil end)

3. Проверьте в игре

Нажмите Play в Roblox Studio и проверьте действие механики. Если механика не работает, откройте окно Output и проверьте тип скрипта, его расположение и названия объектов.

Ваш прогресс

Когда проверите механику в Roblox Studio, отметьте практику как выполненную. Отметка хранится только в этом браузере, не в личном кабинете.

Если объединяете несколько скриптов

Добавляйте механики по одной и проверяйте окно Output. Не создавайте несколько одинаковых систем монет или интерфейсов; скрипты, меняющие WalkSpeed, прыжок или освещение, могут влиять друг на друга.

⭐ Три шага к собственной игре
1. Повторите и измените

Измените время открытия с 6 до 12 секунд.

2. Улучшите

Разместите кристаллы на трёх разных платформах.

3. Придумайте своё

Придумайте поисковую игру с подсказками и несколькими дверями.

4. Проверьте себя

Что открывает дверь в проекте с тремя цветами?

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

Имена Red, Blue, Green должны совпадать точно. Прогресс хранится только в течение текущего посещения сервера.