🎮 Як створити "Веселий Obby" у Roblox Studio
🟢 Крок 1: Відкрий Roblox Studio
-
Відкрий Roblox Studio.
-
Натисни "New", обери шаблон "Obby Template" або "Baseplate" (порожня сцена, якщо хочеш все з нуля).
🟠 Крок 2: Побудуй перешкоди
-
В меню зліва в Explorer знайди
Workspace
. -
Натисни "Model" → "Part" – створиться новий блок.
-
Зміни розмір і колір у вкладці "Home".
-
Розмісти блок вище землі — це буде перша платформа.
▶ Ідеї платформ:
-
Веселкова платформа 🌈
-
М'який зефір 🍬
-
Гаряча лава (kill part) 🔥
-
Стрибаючі плитки (jump pads) 🟩
-
Телепорт або рухома платформа ⚙️
🟡 Крок 3: Додай Kill Part (плитка, що "вбиває")
-
Вибери блок → вкладка "View" → відкрити Properties.
-
У Properties, натисни
+
і додай Script. -
Встав цей код:
script.Parent.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
hit.Parent.Humanoid.Health = 0
end
end)
💡 Зміни колір плитки на червоний — щоб гравці знали, що це небезпечно.
🟣 Крок 4: Додай Checkpoint (точка збереження)
-
Створи новий блок → назви його "Checkpoint".
-
Додай Script:
script.Parent.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player:SetAttribute("Checkpoint", script.Parent.Position)
end
end)
-
Також потрібно додати скрипт на старті гри, щоб гравець міг з’являтися на останньому чекпоінті — ми це зробимо трішки пізніше.
🔵 Крок 5: Додай фініш
-
Створи фінальну платформу.
-
Додай табличку з текстом: "Вітаємо! Ти пройшов Obby!"
-
Можна зробити, щоб після фінішу гра давала бейдж чи музику.
🔧 Крок 6: Протестуй гру
-
Натисни Play (F5), щоб перевірити, чи працюють платформи, kill parts, чекпоінти.
-
Виправ помилки, якщо щось не працює.
🌟 Ідеї для веселого дизайну:
-
Використовуй MeshParts (наприклад, печиво, зірки, фрукти).
-
Додай веселу музику (вставити Sound у Workspace).
-
Додай анімації або звуки при стрибку або смерті.
-
Прикрась світ: небо, хмари, кольорові світильники.
Щоб гравець відновлювався на останньому чекпоінті після загибелі — потрібно зробити збереження та встановлення його позиції під час спавну.
🧠 🔧 Що ми зробимо:
-
Гравець торкається чекпоінту — зберігається позиція.
-
Коли гравець помирає і знову з’являється — він спавниться на цьому місці.
✅ 1. Скрипт для збереження чекпоінта
(додаємо в Checkpoint — тобто в саму плитку-чекпоінт)
script.Parent.Touched:Connect(function(hit)
local character = hit.Parent
local player = game.Players:GetPlayerFromCharacter(character)
if player then
player:SetAttribute("Checkpoint", script.Parent.Position)
end
end)
✅ 2. Скрипт, що ставить гравця на чекпоінт під час появи
(додаємо в ServerScriptService — як Script, не LocalScript!)
-
У Explorer знайди
ServerScriptService
. -
Клікни правою кнопкою → Insert Object → Script.
-
Встав:
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
wait(0.1) -- трохи почекати, щоб Character прогрузився
-- Отримуємо чекпоінт, якщо є
local checkpoint = player:GetAttribute("Checkpoint")
if checkpoint then
character:WaitForChild("HumanoidRootPart").CFrame = CFrame.new(checkpoint + Vector3.new(0, 3, 0))
end
end)
end)
🔄 Що це робить:
-
Зберігає позицію чекпоінта в атрибутах гравця.
-
При відродженні, ставить гравця на цей чекпоінт.
-
Додає трохи "зверху" по Y, щоб не застрягнути в платформі.
✅ Поради:
-
Назви всі чекпоінти однаково (наприклад
Checkpoint
) або зроби кожен унікальним. -
Якщо буде кілька рівнів — можна зберігати рівень, а не просто позицію.
🌈 1. Веселкова платформа
-
Створи
Part
у вікні Model. -
Увімкни Properties (View → Properties).
-
Натисни
+
на Part → додай Script і встав:
local colors = {
Color3.fromRGB(255, 0, 0), -- червоний
Color3.fromRGB(255, 165, 0), -- помаранчевий
Color3.fromRGB(255, 255, 0), -- жовтий
Color3.fromRGB(0, 255, 0), -- зелений
Color3.fromRGB(0, 127, 255), -- блакитний
Color3.fromRGB(75, 0, 130), -- індиго
Color3.fromRGB(139, 0, 255) -- фіолетовий
}
local part = script.Parent
local index = 1
while true do
part.Color = colors[index]
index = index % #colors + 1
wait(0.3) -- швидкість зміни
end
🎨 Платформа буде переливатися кольорами веселки.
🍬 2. М’який зефір
-
Створи
Part
і зроби її розмір 4, 1, 4 (широкий і низький блок). -
У Properties:
-
Color → білий або рожевий.
-
Material →
SmoothPlastic
. -
Shape →
Cylinder
абоBlock
. -
Reflectance = 0.1 або 0.2 — буде трохи блискучий.
-
Anchored = true (щоб не падав).
-
-
Для краси можна додати кілька різних “зефірок” поруч.
🔥 3. Гаряча лава (kill part)
-
Створи
Part
і зроби її червоною/помаранчевою. -
Встанови
Material = Neon
,Anchored = true
. -
Додай Script в цю платформу:
script.Parent.Touched:Connect(function(hit)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid then
humanoid.Health = 0
end
end)
🔥 Тепер, хто ступить на лаву — "згорає"!
🟩 4. Стрибаючі плитки (Jump Pads)
-
Створи
Part
, зроби зеленою. -
Назви її наприклад JumpPad.
-
Додай Script:
script.Parent.Touched:Connect(function(hit) local character = hit.Parent local humanoid = character:FindFirstChild("Humanoid") local hrp = character:FindFirstChild("HumanoidRootPart") if humanoid and hrp then local jumpForce = Instance.new("BodyVelocity") jumpForce.Velocity = Vector3.new(0, 100, 0) jumpForce.MaxForce = Vector3.new(0, 4000, 0) jumpForce.Parent = hrp game.Debris:AddItem(jumpForce, 0.3) -- автоматично видаляє через 0.3 сек end end)
💥 Коли гравець торкається — його підкидає вгору.
⚙️ 5. Телепорт або рухома платформа
🌀 Телепорт
-
Створи 2 платформи — "Вхід" і "Вихід".
-
Назви їх, наприклад,
TeleIn
іTeleOut
. -
В
TeleIn
додай Script:
function onTouch(part) local humanoid = part.Parent:FindFirstChild("Humanoid") if (humanoid~=nil) then humanoid.Parent:MoveTo(script.Parent.Parent.TeleOut.Position) -- Teleporter это блок куда мы телепортируемся если вы хотите сделать несколько порталов то поменяйте название блока в скрипте и на самом блоке end end script.Parent.Touched:connect(onTouch)
🔄 Після дотику до TeleIn
— гравець телепортується на TeleOut
.
🚛 Рухома платформа
-
Створи
Part
, розмісти як платформу. -
Назви її
MovingPlatform
. -
Додай Script:
local part = script.Parent
local startPos = part.Position
local endPos = startPos + Vector3.new(0, 0, 20) -- рух вперед на 20
local speed = 2
local goingToEnd = true
while true do
local target = goingToEnd and endPos or startPos
part.Position = part.Position:Lerp(target, 0.05)
if (part.Position - target).magnitude < 1 then
goingToEnd = not goingToEnd
wait(1)
end
wait(0.03)
end
↔ Платформа буде їздити вперед-назад!