Створення гри Grow a Garden


Мета уроку:

  • Створити просту гру, де гравець саджає насіння, чекає поки воно виросте і збирає врожай.

  • Навчитися працювати з кнопками, кліками миші, таймерами та зміною зовнішнього вигляду об'єктів.


🔧 Підготовка середовища

Крок 1. Створи новий проект:

  1. Відкрий Roblox Studio.

  2. Створи новий Baseplate проєкт.

Крок 2. Додай об'єкти:

  • Part → зроби прямокутну грядку, назви її "Soil" і встанови колір коричневий.

  • Part → створити модель насіння "Seed" (маленький круглий Part).

  • Part → створити модель саджанця "Sprout" (зелене маленьке деревце).

  • Part → створити модель рослини "Plant" (більше дерево або кущ).

  • Створи Tool для посадки з назвою "SeedTool" і встав у неї "Seed".

💡 Порада: Об’єднай "Seed", "Sprout" і "Plant" у Folder або ReplicatedStorage для зручного виклику в коді.


📜 Кодування

Крок 3. Підготовка: Сховище ресурсів

  • У ReplicatedStorage створи Folder "Plants".

  • Встав туди моделі: "Seed", "Sprout", "Plant".


Крок 4. Посадка насіння

Script в Tool (SeedTool):

local tool = script.Parent local player = game.Players.LocalPlayer local replicatedStorage = game:GetService("ReplicatedStorage") local seedModel = replicatedStorage.Plants.Seed tool.Activated:Connect(function() local mouse = player:GetMouse() local soil = mouse.Target if soil and soil.Name == "Soil" then local newSeed = seedModel:Clone() newSeed.Position = soil.Position + Vector3.new(0, 1, 0) newSeed.Parent = workspace newSeed.Anchored = true wait(5) -- Час до проростання local sprout = replicatedStorage.Plants.Sprout:Clone() sprout.Position = newSeed.Position sprout.Parent = workspace sprout.Anchored = true newSeed:Destroy() wait(5) -- Час до росту local plant = replicatedStorage.Plants.Plant:Clone() plant.Position = sprout.Position plant.Parent = workspace plant.Anchored = true sprout:Destroy() end end)

🧠 Пояснення

  • tool.Activated — подія, коли гравець клікає інструментом.

  • mouse.Target — визначає на що клікнули.

  • .Clone() — копіює модель.

  • wait() — пауза в секундах.


🌾 Крок 5. Збір врожаю

Script в Plant (додати до моделі рослини):

local plant = script.Parent plant.Touched:Connect(function(hit) local player = game.Players:GetPlayerFromCharacter(hit.Parent) if player then -- Додай очки або предмет plant:Destroy() end end)

🧪 Крок 6. Відображення прогресу

Додай GUI:

  1. У StarterGui створи ScreenGuiTextLabel "GrowStatus".

  2. Напиши в коді:

local label = script.Parent:WaitForChild("GrowStatus") local function updateStatus(text) label.Text = text end updateStatus("Посади насіння") wait(5) updateStatus("Проросло!") wait(5) updateStatus("Готово до збору!")

🔁 Цей код можна інтегрувати з попереднім, щоб оновлювати статус під час росту.


🎓 Завдання для учнів

Базові:

  1. Зроби декілька грядок.

  2. Додай іншу рослину, яка росте довше.

Середні:

  1. Зроби лічильник очків за зібрані рослини.

  2. Створи магазин, де можна купити інші види насіння.

Важкі:

  1. Створи таймер доби: вдень садити, вночі не можна.

  2. Додай "полив" — якщо не полити рослину, вона не виросте.


✅ Підсумок уроку

Учні навчилися:

  • працювати з Tool, Mouse, ReplicatedStorage

  • використовувати Clone(), Touched, wait()

  • оновлювати GUI

  • робити ітерацію росту об'єкта


📁 Файли та структура

StarterPack/ └── SeedTool/ └── LocalScript ReplicatedStorage/ └── Plants/ ├── Seed ├── Sprout └── Plant StarterGui/ └── ScreenGui/ └── GrowStatus (TextLabel)


Скрипт для бейджа:

script.Parent.Touched:Connect(function(part) if part.Parent:FindFirstChild("Humanoid") then local player = game.Players:GetPlayerFromCharacter(part.Parent) game:GetService("BadgeService"):AwardBadge(player.UserId, 2264354650232959) end end)