Cтворення гри, де гравець проходить лабіринт, знаходить ключ і відкриває двері до наступного рівня
Покроковий процес:
1. Налаштування проекту
Відкрийте Roblox Studio і створіть новий проект (порожню карту або шаблон).
Встановіть камеру так, щоб зручно працювати з майбутнім лабіринтом.
2. Створення лабіринту
1. Побудова лабіринту:
- Використовуйте інструмент Part для створення стін.
- Розташуйте їх у вигляді коридорів.
- Ви можете змінювати розміри частин у вкладці Model (Scale, Move).
2. Додавання деталей:
- Додайте підлогу (великий Part).
- Використовуйте різні кольори чи текстури для стін і підлоги (властивості Material та Color).
3. Створення ключа
- У вкладці Model створіть новий Part (назвіть його Key).
- Зробіть його невеликим і змініть колір (наприклад, жовтий).
- Встановіть його у випадковому місці лабіринту.
- Встановіть властивість Anchored на true (щоб ключ не рухався).
- Додайте до ключа Script:
Скрипт для ключа:
- Натисніть правою кнопкою на ключ → Insert Object → Script.
- У скрипт вставте код:
local key = script.Parent local playerWithKey = nil key.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then playerWithKey = player
key:Destroy() -- Прибираємо ключ після збирання
print(player.Name .. " знайшов ключ!")
end
end)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then playerWithKey = player
key:Destroy() -- Прибираємо ключ після збирання
print(player.Name .. " знайшов ключ!")
end
end)
4. Створення дверей
- У вкладці Model створіть новий Part (назвіть його Door).
- Зробіть його високим і встановіть у кінці лабіринту.
- Встановіть властивість Anchored на true.
- Скрипт для дверей:
Додайте до дверей Script:
- Натисніть правою кнопкою на двері → Insert Object → Script.
- У скрипт вставте код:
local door = script.Parent
door.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player and player:FindFirstChild("leaderstats") then
if player.leaderstats:FindFirstChild("KeyFound") and player.leaderstats.KeyFound.Value then door:Destroy() -- Видаляємо двері, якщо гравець має ключ
print(player.Name .. " відкрив двері!")
else
print("Потрібен ключ, щоб відкрити двері!")
end
end
end)
door.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player and player:FindFirstChild("leaderstats") then
if player.leaderstats:FindFirstChild("KeyFound") and player.leaderstats.KeyFound.Value then door:Destroy() -- Видаляємо двері, якщо гравець має ключ
print(player.Name .. " відкрив двері!")
else
print("Потрібен ключ, щоб відкрити двері!")
end
end
end)
5. Додавання системи збереження ключа
- Вставте Script у ServerScriptService:
- Натисніть правою кнопкою на ServerScriptService → Insert Object → Script.
- Код для додавання лічильника ключів:
game.Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local keyFound = Instance.new("BoolValue")
keyFound.Name = "KeyFound"
keyFound.Value = false keyFound.Parent = leaderstats end)
Відредагуйте скрипт для ключа, щоб він оновлював статус у лідерборді:
local key = script.Parent
key.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
local stats = player:FindFirstChild("leaderstats")
if stats and stats:FindFirstChild("KeyFound") then
stats.KeyFound.Value = true
key:Destroy()
print(player.Name .. " зібрав ключ!")
end
end
end)
key.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
local stats = player:FindFirstChild("leaderstats")
if stats and stats:FindFirstChild("KeyFound") then
stats.KeyFound.Value = true
key:Destroy()
print(player.Name .. " зібрав ключ!")
end
end
end)
7. Перехід на наступний рівень
- Створіть нову карту (в окремому місці).
- Додайте в кінець лабіринту телепорт:
- Додайте новий Part (назвіть його Teleport).
- Додайте до нього Script з кодом:
local teleport = script.Parent
teleport.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player:LoadCharacter()
player:MoveTo(Vector3.new(0, 10, 0)) -- Координати нового рівня
end
end)
teleport.Touched:Connect(function(hit)
local player = game.Players:GetPlayerFromCharacter(hit.Parent)
if player then
player:LoadCharacter()
player:MoveTo(Vector3.new(0, 10, 0)) -- Координати нового рівня
end
end)
8. Тестування
- Запустіть гру в Roblox Studio (натисніть Play).
- Переконайтеся, що:
- Гравець не може пройти стіни.
- Ключ зникає після збирання.
- Двері відкриваються лише після знаходження ключа.
- Перехід до наступного рівня працює.
9. Розширення
Додайте більше рівнів із складнішими лабіринтами.
Додайте таймер або супротивників.
Додайте звуки та візуальні ефекти.
