← Усі уроки
Урок 1

Створи свій перший obby

Смуга перешкод із лавою, чекпоінтами, платформою, що зникає, і фінішем.

Безкоштовно45 хвилин · Для початківців · Roblox Studio
1
Крок 1 / 10

Створи нове місце

  1. Відкрий Roblox Studio і увійди в акаунт.
  2. Натисни New Experience і вибери шаблон Baseplate.
  3. Тепер у тебе є пласка сіра підлога. Твоя траса стоятиме на ній.

Докладніше

  • Roblox Studio є безкоштовною програмою для Windows і Mac. Якщо її ще не встановлено, завантаж її з create.roblox.com і увійди зі своїм акаунтом Roblox.
  • Шаблон Baseplate є в списку шаблонів на початковому екрані. Це той, що показує порожню сіру підлогу.
  • Місце відкривається у вкладці. Назва вкладки є назвою твого місця.
  • На Mac щоразу, коли в уроці написано Ctrl, натискай клавішу Cmd.
Порада. Зберігай часто через File → Save to Roblox. Studio зберігає старі версії, тож ти завжди можеш повернутися назад.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

2
Крок 2 / 10

Пізнай три панелі

  1. Велике 3D-вікно посередині називається Viewport. Це світ твоєї гри.
  2. Explorer показує всі об'єкти в грі. Properties показує налаштування вибраного об'єкта.
  3. Щоб рухати камеру, утримуй праву кнопку миші й дивись навколо, літай клавішами W A S D, вниз і вгору рухайся клавішами Q і E.
  4. Заблукав(-ла)? Вибери будь-яку частину й натисни F. Камера перескочить до неї.

Докладніше

  • Explorer і Properties стоять справа у вікні. Explorer зверху, а Properties під ним.
  • Клацни об'єкт у Viewport, і він підсвітиться також в Explorer. Клацни його назву в Explorer, і він буде вибраний у Viewport.
  • Пласка платформа з круглим знаком на ній є SpawnLocation. Гравці з'являються на ній, коли гра починається. Залиш її на місці.
  • Помилився(-лась)? Натисни Ctrl+Z, щоб скасувати останню дію. Натисни ще раз, щоб повернутися на крок назад.
Порада. Якщо якоїсь панелі немає, відкрий її в меню Window. У старіших версіях вона є на вкладці View.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

3
Крок 3 / 10

Збудуй стартову платформу

  1. На вкладці Home натисни Part. З'явиться сірий блок.
  2. У Properties постав Size на 12, 1, 12 і перейменуй частину на Start.
  3. Увімкни Anchored. Закріплена частина ніколи не падає і не рухається.
  4. Вибери колір, який тобі подобається, кнопкою Color.

Докладніше

  • Нова частина з'являється перед камерою, а її назва в Explorer є Part.
  • Щоб її перейменувати, клацни її в Explorer один раз і натисни F2, введи Start і натисни Enter.
  • У Properties клацни поле Size, введи 12, 1, 12 і натисни Enter. Ці три числа означають ширину, висоту й глибину.
  • Anchored є прапорцем у Properties. Галочка означає, що він увімкнений.
  • Інструментом Move (Ctrl+2) постав платформу поруч із SpawnLocation, щоб гравці могли зійти на неї.
Часта помилка. Забути про Anchored. Поки ти редагуєш, частина виглядає нормально, а коли гра починається, вона падає в порожнечу.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

4
Крок 4 / 10

Додай стрибки

  1. Вибери Start і натисни Ctrl+D, щоб створити копію. Посунь копію вперед інструментом Move (Ctrl+2).
  2. Зроби її меншою інструментом Scale (Ctrl+3). Розмір 6, 1, 6 добре підходить.
  3. Залиш проміжок від 5 до 7 studs між платформами. Повтори, поки не матимеш від 6 до 8 платформ.
  4. Підніми деякі платформи трохи вище, щоб траса йшла вгору.

Докладніше

  • Копія з'являється точно поверх оригіналу, тож здається, ніби нічого не сталося. Потягни синю або червону стрілку інструмента Move, і копія виїде вбік.
  • Інструментом Scale потягни за одну з маленьких кульок на частині, щоб змінити її розмір. Розмір можна також ввести в Properties.
  • Поле Position у Properties показує, де стоїть частина. Порівняй числа двох платформ, щоб виміряти проміжок між ними.
  • Кожна платформа має бути Anchored. Копії закріпленої частини теж закріплені, тож перевіряй це лише для частин, які ти створив(-ла) заново.
  • Натисни F5, щоб самому спробувати стрибки, і Shift+F5, щоб зупинити. Роби так після кожних двох-трьох платформ.
Порада. Звичайний персонаж стрибає на 7.2 studs угору й долає приблизно 8 studs уперед. Проміжки більші за 8 studs майже неможливо перестрибнути.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

5
Крок 5 / 10

Додай лаву, яка повертає гравця на старт

  1. Додай нову Part між двома платформами. Зроби її червоною, постав Material на Neon, увімкни Anchored і назви її Lava.
  2. В Explorer наведи курсор на Lava, натисни кнопку + і вибери Script.
  3. Видали рядок, який уже є, і встав цей код.
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. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

6
Крок 6 / 10

Додай чекпоінти

  1. В Explorer наведи курсор на Workspace, натисни + і додай Folder. Назви її Checkpoints.
  2. Розстав уздовж траси три закріплені частини й перетягни їх у папку. Назви їх 1, 2 і 3. Частина 1 стоїть на стартовій платформі.
  3. Наведи курсор на 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. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

7
Крок 7 / 10

Зроби платформу, що зникає

  1. Вибери одну платформу посеред траси й додай до неї Script.
  2. Встав цей код і натисни Play, щоб побачити, як вона блимає.
Platform > Script
local platform = script.Parent

while true do
	task.wait(2)
	platform.Transparency = 1
	platform.CanCollide = false

	task.wait(2)
	platform.Transparency = 0
	platform.CanCollide = true
end

Що робить кожна частина

  • while true do повторює дії безкінечно.
  • task.wait(2) робить паузу на 2 секунди.
  • Transparency 1 робить частину невидимою. CanCollide false дає гравцям провалитися крізь неї.

Докладніше

  • Щоб додати Script, наведи курсор на назву платформи в Explorer, натисни + і вибери Script, так само як для лави.
  • Платформа видима 2 секунди й зникає на 2 секунди. Гравцям треба влучити зі стрибком у потрібний момент.
  • Перше число показує, як довго платформа лишається видимою. Друге число показує, як довго її немає.
  • Не клади цей скрипт у стартову платформу чи в чекпоінт, бо гравці впадуть, щойно прийдуть.
Порада. Зміни ці два числа, і платформа блиматиме швидше або повільніше.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

8
Крок 8 / 10

Збудуй фініш

  1. Постав велику закріплену частину в кінці й назви її Finish. Зроби її золотою, щоб гравці бачили мету.
  2. Додай 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. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

9
Крок 9 / 10

Протестуй свою гру

  1. Натисни F5, щоб пограти. Пройди всю трасу від початку до кінця.
  2. Навмисно впади в лаву. Ти маєш повернутися на своєму останньому чекпоінті.
  3. Натисни Shift+F5, щоб зупинити гру.
  4. Відкрий вікно Output у меню Window. Червоний текст означає, що в скрипті є помилка, і там видно номер рядка.

Докладніше

  • F5 запускає гру з твоїм персонажем у ній. Поки гра працює, панель інструментів змінюється.
  • Зміни, які ти робиш, поки гра працює, зникають, коли ти її зупиняєш. Завжди спершу натискай Shift+F5, а потім редагуй.
  • У вікні Output клацни червоний рядок, і Studio відкриє скрипт на рядку з помилкою.
  • Коли щось не працює, перевір три речі: назву частини, де лежить скрипт і чи ввімкнено Anchored.
Часта помилка. Платформа падає, коли починається гра: Anchored вимкнено. Нічого не відбувається, коли торкаєшся частини: скрипт лежить не в тому об'єкті або в назві є помилка.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

10
Крок 10 / 10

Опублікуй гру

  1. Вибери File → Publish to Roblox. Дай грі назву й короткий опис.
  2. На сайті Creator Hub відкрий свою гру й заповни анкету Maturity. Roblox вимагає її, перш ніж інші люди зможуть грати.
  3. Постав гру на Public і надішли посилання другові.

Докладніше

  • Коли ти публікуєш уперше, Studio просить назву й опис. Натисни Create. Після цього File → Publish to Roblox надсилає твої найновіші зміни.
  • Creator Hub є сайтом create.roblox.com. Увійди з тим самим акаунтом і клацни свою гру в списку.
  • Анкета Maturity питає, що є у твоїй грі. Відповідай чесно. У такому obby, як цей, немає насильства й нічого страшного.
  • Перш ніж гру можна зробити публічною, Roblox може попросити ще дещо, наприклад перевірку віку на акаунті. Сторінка підкаже, чого бракує.
  • Якщо тобі ще немає 18, виконуй цей крок разом із кимось із батьків.
Порада. Попроси друга пограти, поки ти дивишся. Місця, де він застрягає, треба виправляти насамперед.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

Тепер змін це сам

  • Додай четвертий чекпоінт. Як його треба назвати?
  • Зроби три платформи, що зникають і блимають з різною швидкістю.
  • Зміни лаву так, щоб вона забирала лише половину здоров'я. Підказка: humanoid.Health = humanoid.Health - 50