Основи програмування на Lua

 

🔹 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(),

  • реалізувати стрільбу,

  • зробити просту систему очок,

  • зібрати базову міні-гру.