Смуга перешкод із лавою, чекпоінтами, платформою, що зникає, і фінішем.
Безкоштовно45 хвилин · Для початківців · Roblox Studio
1
Крок 1 / 10
Створи нове місце
Відкрий Roblox Studio і увійди в акаунт.
Натисни New Experience і вибери шаблон Baseplate.
Тепер у тебе є пласка сіра підлога. Твоя траса стоятиме на ній.
Докладніше
Roblox Studio є безкоштовною програмою для Windows і Mac. Якщо її ще не встановлено, завантаж її з create.roblox.com і увійди зі своїм акаунтом Roblox.
Шаблон Baseplate є в списку шаблонів на початковому екрані. Це той, що показує порожню сіру підлогу.
Місце відкривається у вкладці. Назва вкладки є назвою твого місця.
На Mac щоразу, коли в уроці написано Ctrl, натискай клавішу Cmd.
Порада. Зберігай часто через File → Save to Roblox. Studio зберігає старі версії, тож ти завжди можеш повернутися назад.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Додай нову Part між двома платформами. Зроби її червоною, постав Material на Neon, увімкни Anchored і назви її Lava.
В Explorer наведи курсор на Lava, натисни кнопку + і вибери Script.
Видали рядок, який уже є, і встав цей код.
Lava > Script
local lava = script.Parent
lava.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)
Що робить кожна частина
script.Parent — це частина, у якій лежить скрипт. Тут це лава.
Touched спрацьовує щоразу, коли щось торкається частини. hit — це те, що торкнулося, наприклад, ступня.
hit.Parent — це весь персонаж. Якщо в нього є Humanoid, то це гравець, тож скрипт ставить Health на 0.
Докладніше
Material є списком у Properties. Клацни його й вибери Neon. Neon змушує частину світитися.
Коли ти додаєш Script, він відкривається в новій вкладці з одним рядком коду. Клацни всередині коду, натисни Ctrl+A, щоб виділити все, і Ctrl+V, щоб вставити поверх.
Повернися до свого світу, клацнувши вкладку з назвою твого місця.
Щоб перевірити: натисни F5 і зайди в лаву. Твій персонаж розсипається і повертається на старт.
Зроби лаву широкою й пласкою, наприклад Size 12, 1, 6, і постав її трохи нижче за платформи, щоб невдалий стрибок закінчувався в ній.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
В Explorer наведи курсор на Workspace, натисни + і додай Folder. Назви її Checkpoints.
Розстав уздовж траси три закріплені частини й перетягни їх у папку. Назви їх 1, 2 і 3. Частина 1 стоїть на стартовій платформі.
Наведи курсор на ServerScriptService, натисни + і додай Script. Встав цей код.
ServerScriptService > Script
local Players = game:GetService("Players")
local checkpoints = workspace:WaitForChild("Checkpoints")
Players.PlayerAdded:Connect(function(player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
local stage = Instance.new("IntValue")
stage.Name = "Stage"
stage.Value = 1
stage.Parent = stats
player.CharacterAdded:Connect(function(character)
local root = character:WaitForChild("HumanoidRootPart")
local point = checkpoints:FindFirstChild(tostring(stage.Value))
if point then
task.wait(0.1)
root.CFrame = point.CFrame + Vector3.new(0, 4, 0)
end
end)
end)
for _, point in ipairs(checkpoints:GetChildren()) do
point.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
local stats = player and player:FindFirstChild("leaderstats")
if not stats then return end
local number = tonumber(point.Name)
if number == stats.Stage.Value + 1 then
stats.Stage.Value = number
end
end)
end
Що робить кожна частина
leaderstats — це особлива назва папки. Значення всередині неї з'являються в списку гравців, тож усі бачать свій Stage.
Коли персонаж з'являється, скрипт переносить його до чекпоінта, назва якого дорівнює Stage гравця.
Дотик до чекпоінта збільшує Stage, лише якщо це наступний чекпоінт. Так гравці не можуть перескакувати вперед.
Докладніше
Folder містить інші об'єкти, як тека на комп'ютері. Сама по собі в грі вона нічого не робить.
Щоб перетягнути частину в теку, потягни її назву в Explorer на назву Checkpoints і відпусти. Тоді частина стоятиме на один крок правіше, під текою.
Зроби частини-чекпоінти тонкими й широкими, наприклад Size 6, 0.4, 6, і поклади їх на платформи. Інший колір допоможе гравцям їх помітити.
Щоб перевірити: натисни F5 і подивися на список гравців у правому верхньому куті. Там написано Stage 1. Торкнись чекпоінта 2, і там з'явиться 2.
Чекпоінтів треба торкатися по порядку. Якщо торкнутися 3 раніше за 2, нічого не станеться.
Часта помилка. Назвати частини Checkpoint1 або Один. Скрипт шукає точні назви 1, 2 і 3.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Постав велику закріплену частину в кінці й назви її Finish. Зроби її золотою, щоб гравці бачили мету.
Додай Script до Finish і встав цей код.
Finish > Script
local Players = game:GetService("Players")
local finish = script.Parent
local cooldown = {}
finish.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
local stats = player and player:FindFirstChild("leaderstats")
if not stats or cooldown[player] then return end
cooldown[player] = true
stats.Stage.Value = 1
player:LoadCharacter()
task.wait(2)
cooldown[player] = nil
end)
Що робить кожна частина
GetPlayerFromCharacter знаходить, який гравець торкнувся фінішу.
Таблиця cooldown не дає коду спрацьовувати багато разів за одну секунду.
Stage повертається до 1, а LoadCharacter відправляє гравця на старт для нового проходу.
Докладніше
Щоб зробити її золотою, клацни поле Color у Properties і вибери жовтий. Material Neon змушує її сяяти.
Size 12, 1, 12 добре підходить для фінішу. Постав її після останнього стрибка, трохи вище за решту.
Щоб перевірити: натисни F5, пройди трасу й стань на золоту частину. Ти повернешся на старт, а Stage знову покаже 1.
Пауза в 2 секунди потрібна, бо один крок торкається частини багато разів.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.
Натисни F5, щоб пограти. Пройди всю трасу від початку до кінця.
Навмисно впади в лаву. Ти маєш повернутися на своєму останньому чекпоінті.
Натисни Shift+F5, щоб зупинити гру.
Відкрий вікно Output у меню Window. Червоний текст означає, що в скрипті є помилка, і там видно номер рядка.
Докладніше
F5 запускає гру з твоїм персонажем у ній. Поки гра працює, панель інструментів змінюється.
Зміни, які ти робиш, поки гра працює, зникають, коли ти її зупиняєш. Завжди спершу натискай Shift+F5, а потім редагуй.
У вікні Output клацни червоний рядок, і Studio відкриє скрипт на рядку з помилкою.
Коли щось не працює, перевір три речі: назву частини, де лежить скрипт і чи ввімкнено Anchored.
Часта помилка. Платформа падає, коли починається гра: Anchored вимкнено. Нічого не відбувається, коли торкаєшся частини: скрипт лежить не в тому об'єкті або в назві є помилка.
Цей крок у мене не виходить
Спершу перевір ці три речі
Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.