На уроці ми навчилися створювати лідерборд (рахунок) та додавати бали при збиранні монет. Тепер використаємо ці бали з користю! Твоє завдання — створити стіну на фініші лабіринту, яка відкриється тільки тоді, коли гравець збере певну кількість монет.
🛠️ План роботи: Фінішні двері
Що потрібно зробити:
-
Перешкода: Створи великий Part (стіну), який
повністю перекриває вихід із твого лабіринту або перехід на
наступний рівень. Не забудь увімкнути
Anchored. -
Екран з інформацією: Додай всередину стіни
скрипт, назви його
DisplayScript, і встав туди шаблонний код, наведений нижче. Цей скрипт автоматично створить текст на стіні і буде показувати, скільки монет залишилося зібрати. -
Скрипт перепустки: Створи
другий (новий) скрипт у цій самій стіні. Тобі
потрібно самостійно написати логіку: при дотику перевірити, чи
має гравець 20 монет (або іншу кількість, яку ти вибереш).
Якщо монет достатньо — стіна має бути знищена.
💡 Підказки для самостійного скрипта
Відкривай кроки по черзі, якщо не знаєш, що писати далі.
1. Початок скрипта
Тобі потрібна подія дотику. Створи змінну для стіни (
script.Parent) та напиши конструкціюTouched:Connect(function(otherPart). Далі знайди гравця черезotherPart.Parentтаgame.Players:FindFirstChild(...), як ми робили на уроці.2. Доступ до рахунку (Leaderstats)
Коли ти знайшов гравця та перевірив його наявність (
if player then), звернися до його монет. Шлях такий:player.leaderstats.ТВОЯ_НАЗВА_СТАТИСТИКИ.Value. Можеш зберегти це в окрему змінну.3. Перевірка умови
Використай розгалуження. Напиши: ЯКЩО монети гравця більше або дорівнює (
>=) 20, ТОДІ...4. Відкриття проходу
Всередині блоку
ifнапиши команду, яка знищить стіну (команда:Destroy()для твоєї змінної стіни). Готово!
💡 Шаблон коду:
local wall = script.Parent
local requiredCoins = 20 -- Скільки монет потрібно зібрати
-- 1. Створення екрана та тексту на стіні
local surfaceGui = Instance.new("SurfaceGui")
surfaceGui.Face = Enum.NormalId.Front -- Якщо текст з іншого боку, зміни Front на Back, Left або Right
surfaceGui.Parent = wall
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(1, 0, 1, 0)
textLabel.BackgroundTransparency = 1
textLabel.TextColor3 = Color3.fromRGB(255, 50, 50)
textLabel.TextScaled = true
textLabel.Font = Enum.Font.FredokaOne
textLabel.Text = "Збери " .. requiredCoins .. " монет!"
textLabel.Parent = surfaceGui
-- 2. Оновлення тексту при дотику гравця
wall.Touched:Connect(function(hit)
local character = hit.Parent
local player = game.Players:FindFirstChild(character.Name)
if player then
-- УВАГА: Якщо твоя змінна лідерборду називається не "score", зміни слово нижче!
local currentCoins = player.leaderstats.score.Value
if currentCoins < requiredCoins then
local leftToCollect = requiredCoins - currentCoins
textLabel.Text = "Залишилося: " .. leftToCollect
end
end
end)
Відеоінструкція
🎮 Перевір себе: Термінологія Leaderstats
У програмуванні одна неправильна літера може зламати весь код! Збери з літер правильні назви команд та властивостей, які ми використовуємо для створення рахунку.
1️⃣ Зроби відео, де ти підходиш до стіни без монет (вона пише залишок), а потім збираєш 20 монет, підходиш знову — і стіна зникає.
2️⃣ Обов'язково зроби скріншоти результату в міні-іграх.
Відправ фото у наш Telegram-чат.