🔹 1. Основи Lua (20 хв)
Теорія:
-
Що таке змінна (
local speed = 10
). -
Типи даних: число, рядок, булевий тип.
-
Вивід у консоль (
print()
). -
Коментарі
--
.
Практика:
-
Створити Script у Workspace.
-
Написати:
local name = "Roblox" local speed = 10 print("Hello, " .. name .. "! Speed = " .. speed)
👉 Завдання учням: змінити змінні і подивитись у Output.
🔹 2. Події та функції (25 хв)
Теорія:
-
Що таке функція (
function ... end
). -
Виклик функцій.
-
Події (наприклад,
Touched
,MouseButton1Click
).
Практика:
-
Додати Part у Workspace.
-
Додати до нього Script:
local part = script.Parent function onTouch(otherPart) print("Торкнулися: " .. otherPart.Name) end part.Touched:Connect(onTouch)
👉 Завдання учням: зробити, щоб після торкання куб ставав червоним.
🔹 3. Робота з об’єктами гри (25 хв)
Теорія:
-
Доступ до об’єктів:
workspace.Part
,game.Players
. -
Зміна властивостей:
part.Color
,part.Position
.
Практика:
-
Зробити скрипт, що змінює колір блоку раз на секунду:
local part = script.Parent while true do part.Color = Color3.new(math.random(), math.random(), math.random()) wait(1) end
👉 Завдання учням: зробити “світлофор” (червоний → жовтий → зелений).
🔹 4. Міні-проєкт: керування гравцем (30 хв)
Теорія:
-
Використання LocalScript (в StarterPlayerScripts).
-
Події клавіатури (
UserInputService
).
Практика:
-
Написати скрипт для руху куба (імітація гравця):
local UserInputService = game:GetService("UserInputService") local part = workspace.Part local speed = 1 UserInputService.InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.W then part.Position += Vector3.new(0, 0, -speed) elseif input.KeyCode == Enum.KeyCode.S then part.Position += Vector3.new(0, 0, speed) elseif input.KeyCode == Enum.KeyCode.A then part.Position += Vector3.new(-speed, 0, 0) elseif input.KeyCode == Enum.KeyCode.D then part.Position += Vector3.new(speed, 0, 0) end end)
👉 Завдання учням: зробити, щоб куб рухався швидше при натисканні Shift
.
🔹 5. Підсумки та рефлексія (10 хв)
-
Обговорити, що вдалося.
-
Питання/відповіді.
-
Дати учням домашнє завдання:
🔸 зробити свою гру з кубом, який рухається і міняє колір при зіткненні з іншими блоками.
✅ Результат уроку
Після 2 годин учні знатимуть:
-
що таке змінні, функції та події в Luau;
-
як керувати об’єктами в Roblox Studio;
-
як зробити маленький інтерактивний проєкт.
Хочеш, я складу тобі цей урок у форматі слайдів для презентації (як план-шпаргалку для викладача), чи краще зробити методичку з кодом і завданнями для учнів?
You said:
ChatGPT said:
Добре 🚀 Давай зробимо наступний (другий) двогодинний урок з Luau у Roblox Studio так, щоб він логічно продовжував попередній.
Урок №1 ми закінчили керуванням кубом.
Урок №2 — підемо далі: навчимося створювати спавн об’єктів, стрільбу та рахунок очок — основа для простої гри.
📘 Урок 2 (2 години)
Тема: Створення ігрових механік: спавн об’єктів, стрільба та рахунок
🔹 0. Вступ (5 хв)
-
Пригадати попередній урок (змінні, функції, події).
-
Коротко пояснити нові теми:
-
спавн об’єктів,
-
створення куль/снарядів,
-
система очок.
-
🔹 1. Спавн об’єктів (20 хв)
Теорія:
-
Метод
Instance.new()
для створення об’єктів. -
Встановлення властивостей (
Position
,Color
). -
Використання
while
іwait()
для циклічного спавну.
Практика:
Скрипт у ServerScriptService:
while true do
local newPart = Instance.new("Part")
newPart.Size = Vector3.new(2, 2, 2)
newPart.Color = Color3.new(math.random(), math.random(), math.random())
newPart.Anchored = true
newPart.Position = Vector3.new(math.random(-20, 20), 5, math.random(-20, 20))
newPart.Parent = workspace
wait(3)
end
👉 Завдання учням: зробити, щоб блоки зникали через 10 секунд.
🔹 2. Стрільба (30 хв)
Теорія:
-
Створення кулі (Part).
-
Додавання швидкості через
BodyVelocity
. -
Виклик через натискання клавіші.
Практика:
У LocalScript в StarterPlayerScripts:
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Space then
local bullet = Instance.new("Part")
bullet.Size = Vector3.new(1, 1, 1)
bullet.Shape = Enum.PartType.Ball
bullet.Color = Color3.new(1, 1, 0)
bullet.Position = workspace.Part.Position + Vector3.new(0, 2, 0)
bullet.Parent = workspace
local bv = Instance.new("BodyVelocity")
bv.Velocity = Vector3.new(0, 0, -50)
bv.Parent = bullet
game:GetService("Debris"):AddItem(bullet, 5) -- авто-видалення кулі
end
end)
👉 Завдання учням: змінити напрямок кулі залежно від руху куба (WASD).
🔹 3. Система очок (25 хв)
Теорія:
-
Значення для гравця (
IntValue
). -
Додавання очок при зіткненні кулі з об’єктом.
Практика:
У ServerScriptService:
local function onTouch(bullet, part)
if part:IsA("Part") and part.Name ~= "Part" then
local score = game.Players:GetPlayerFromCharacter(bullet.Parent).leaderstats.Score
score.Value += 1
part:Destroy()
bullet:Destroy()
end
end
👉 Завдання учням:
-
додати GUI з відображенням очок,
-
зробити так, щоб при досягненні 10 очок з’являлося повідомлення "You Win!".
🔹 4. Міні-проєкт (30 хв)
Зробити просту гру:
-
блоки з’являються на полі;
-
гравець рухає куб і стріляє кулями;
-
при попаданні блок зникає, додається 1 очко;
-
при наборі 10 очок — повідомлення про перемогу.
🔹 5. Підсумки та д/з (10 хв)
-
Що нового дізналися: створення об’єктів, стрільба, очки.
-
Д/з: розширити гру, додавши:
-
блоки, які рухаються до гравця,
-
кілька життів у гравця.
-
✅ Результат
Після 2-го уроку учні зможуть:
-
створювати об’єкти через
Instance.new()
, -
реалізувати стрільбу,
-
зробити просту систему очок,
-
зібрати базову міні-гру.