← Усі уроки
Урок 2

Створи свій перший tycoon

Скидач випускає куби, конвеєр їх несе, збирач перетворює їх на гроші, а кнопка купує другий скидач.

Безкоштовно60 хвилин · Для початківців · Roblox Studio
1
Крок 1 / 9

Підготуй місце

  1. Відкрий Roblox Studio, натисни New Experience і вибери шаблон Baseplate.
  2. В Explorer наведи курсор на Workspace, натисни + і додай Folder. Назви її Tycoon.
  3. Усе, що ти створиш у цьому уроці, лягає в цю папку. Так в Explorer буде порядок.

Докладніше

  • Шаблон Baseplate є в списку шаблонів на початковому екрані.
  • Коли ти клацаєш +, відкривається список. Введи слово Folder, щоб швидко його знайти, і клацни його.
  • Щоб перейменувати теку, клацни її один раз, натисни F2, введи Tycoon і натисни Enter.
  • На Mac щоразу, коли в уроці написано Ctrl, натискай клавішу Cmd.
Порада. Перейменовуй кожну частину одразу після створення. Скрипти шукають частини за назвою, тож частина, яка досі називається Part, не працюватиме.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

2
Крок 2 / 9

Дай кожному гравцеві гроші

  1. Наведи курсор на ServerScriptService, натисни + і додай Script. Назви його Leaderstats.
  2. Видали рядок, який уже є, і встав цей код.
  3. Натисни Play. Твоє ім'я з'явиться в списку гравців, а поруч Cash 0.
ServerScriptService > Leaderstats
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

Що робить кожна частина

  • PlayerAdded спрацьовує один раз для кожного гравця, який заходить.
  • Папка з назвою leaderstats особлива. Roblox показує значення всередині неї в списку гравців.
  • IntValue зберігає ціле число. Тут воно зберігає гроші гравця.

Докладніше

  • ServerScriptService є в списку Explorer. Скрипти в ньому працюють на сервері, де гравці не можуть їх змінити.
  • Скрипт відкривається в новій вкладці. Клацни всередині коду, натисни Ctrl+A, а потім Ctrl+V, щоб замінити все.
  • Повернися до свого світу, клацнувши вкладку з назвою твого місця.
  • Список гравців стоїть у правому верхньому куті гри. Натисни F5, щоб почати, і Shift+F5, щоб зупинити.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

3
Крок 3 / 9

Збудуй скидач

  1. Додай Part у папку Tycoon. Постав Size на 4, 1, 4, увімкни Anchored і назви її Dropper.
  2. Підніми її приблизно на 10 studs над підлогою інструментом Move (Ctrl+2).
  3. Додай Script до Dropper і встав цей код.
  4. Натисни Play. Кожні 2 секунди падає жовтий куб.
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

Що робить кожна частина

  • Instance.new створює нову частину з коду.
  • Position ставить куб на 2 studs нижче скидача.
  • Debris видаляє кожен куб через 20 секунд, тож старі куби ніколи не накопичуються.

Докладніше

  • Щоб покласти частину в теку, потягни її назву в Explorer на назву Tycoon.
  • Інструментом Move потягни зелену стрілку вгору. Поле Position у Properties показує висоту як середнє число.
  • Куб з'являється на 2 studs нижче скидача, а потім падає. Якщо скидач надто низько, куби накопичуються під ним.
  • Перший куб приходить через 2 секунди після початку гри.
Часта помилка. Куби не з'являються: перевір, що скрипт лежить усередині Dropper і що Dropper має Anchored.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

4
Крок 4 / 9

Додай конвеєр

  1. Додай Part, постав Size на 6, 1, 30, увімкни Anchored і назви її Conveyor.
  2. Постав її на підлогу так, щоб один кінець був просто під скидачем.
  3. Додай Script до Conveyor і встав цей код.
  4. Натисни Play. Куби падають на конвеєр і їдуть по ньому.
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

Що робить кожна частина

  • AssemblyLinearVelocity каже Roblox, як швидко мають рухатися предмети, що лежать на частині.
  • LookVector — це напрям, куди дивиться передня сторона частини. Число 8 — це швидкість у studs за секунду.

Докладніше

  • Кожна частина має перед. Конвеєр штовхає куби до свого переду.
  • Довгий бік конвеєра, ті 30 studs, має дивитися від скидача, у бік місця, де стоятиме збирач.
  • Сам конвеєр не рухається. Ковзають лише речі, що лежать на ньому.
  • Якщо куби падають з боку, зроби конвеєр ширшим або перенеси скидач на його середину.
Часта помилка. Куби їдуть не в той бік: поверни конвеєр на 180 градусів інструментом Rotate (Ctrl+4).
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

5
Крок 5 / 9

Збирай куби

  1. Додай Part на дальньому кінці конвеєра. Постав Size на 6, 4, 1, увімкни Anchored, зроби її зеленою й назви Collector.
  2. Постав її сторчма, як стіну, щоб куби в неї впиралися.
  3. Додай Script до Collector і встав цей код.
  4. Натисни Play. Кожен куб, що доїхав до збирача, додає 5 до Cash.
Collector > Script
local Players = game:GetService("Players")
local collector = script.Parent

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

Що робить кожна частина

  • Скрипт ігнорує все, що не називається Cube. Твої ноги не рахуються.
  • Destroy прибирає куб із гри.
  • Цикл дає 5 грошей кожному гравцю на сервері. Тайкун з одним власником на ділянку — це складніший урок.

Докладніше

  • Size 6, 4, 1 уже стоїть сторчма: 6 завширшки, 4 заввишки й 1 завтовшки. Постав її впоперек кінця конвеєра, як зачинені ворота.
  • Її нижній край має торкатися конвеєра, щоб жоден куб не прослизнув під нею.
  • Щоб зробити її зеленою, клацни поле Color у Properties.
  • Щоб перевірити: натисни F5 і стеж за списком гравців. Cash зростає на 5 щоразу, коли куб доходить до стіни.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

6
Крок 6 / 9

Підготуй другий скидач

  1. Вибери Dropper і натисни Ctrl+D. Назви копію Dropper2 і постав її поруч із першою, теж над конвеєром.
  2. Перетягни Dropper2 із Workspace в ServerStorage.
  3. Він зникає зі світу. Об'єкти в ServerStorage чекають там, поки скрипт не поверне їх назад.

Докладніше

  • Копія стоїть точно поверх оригіналу. Потягни її вбік інструментом Move, щоб бачити обидві.
  • Перейменуй копію через F2. Назва має бути Dropper2, з великою D і без пробілу.
  • ServerStorage є в списку Explorer. Потягни на нього назву Dropper2.
  • Скрипт усередині копії прийшов разом із нею. Додавати його знову не треба.
Порада. Скрипти всередині ServerStorage не працюють. Тому другий скидач мовчить, поки його хтось не купить.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

7
Крок 7 / 9

Додай кнопку купівлі

  1. Додай Part на підлогу біля конвеєра. Постав Size на 4, 1, 4, увімкни Anchored, зроби її яскраво-синьою й назви BuyDropper.
  2. Додай Script до BuyDropper і встав цей код.
  3. Щоб підписати кнопку, наведи курсор на BuyDropper, натисни + і додай BillboardGui. Постав його Size на {0, 200}, {0, 50}, а StudsOffset на 0, 3, 0.
  4. Додай TextLabel у BillboardGui. Постав його Size на {1, 0}, {1, 0}, увімкни TextScaled і введи цей текст: Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

Що робить кожна частина

  • PRICE — це ціна. Зміни число, щоб кнопка стала дешевшою або дорожчою.
  • Скрипт перевіряє, що кнопки торкнувся справжній гравець і що в нього вистачає грошей.
  • Коли Dropper2 переходить у workspace, він вмикається. Його скрипт одразу починає працювати.

Докладніше

  • Гравці купують, заходячи на кнопку, тож постав її на підлогу там, куди легко дістатися.
  • Для Size і StudsOffset клацни поле в Properties, введи числа точно так, як показано, з дужками й комами, і натисни Enter.
  • Text є властивістю TextLabel. Клацни поле Text, введи слова й натисни Enter.
  • Напис висить над кнопкою. Якщо ти його не бачиш, збільши середнє число в StudsOffset.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

8
Крок 8 / 9

Протестуй весь цикл

  1. Натисни F5. Дивись, як куби падають, їдуть конвеєром і перетворюються на гроші.
  2. Зачекай, поки назбираєш 50 грошей, і ступи на синю кнопку.
  3. З'являється другий скидач, кнопка зникає, а гроші зростають удвічі швидше.
  4. Натисни Shift+F5, щоб зупинити. Якщо щось не працює, відкрий вікно Output у меню Window і прочитай червоний текст.

Докладніше

  • Щоб дійти до 50 грошей, потрібно 10 кубів, тобто щонайменше 20 секунд.
  • Після купівлі Cash зменшується на 50. Це правильно. Ти заплатив(-ла) за скидач.
  • Після купівлі кнопка знищується, тож її не можна купити двічі.
  • Якщо другий скидач з'явився не там, зупини гру, перетягни Dropper2 із ServerStorage назад у Workspace, перемісти його й знову перетягни в ServerStorage.
Часта помилка. Cash не змінюється: частини, що падають, мають називатися Cube, точно як у скрипті скидача.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

9
Крок 9 / 9

Опублікуй гру

  1. Вибери File → Publish to Roblox. Дай грі назву й короткий опис.
  2. На сайті Creator Hub відкрий свою гру й заповни анкету Maturity.
  3. Постав гру на Public і надішли посилання другові.

Докладніше

  • Коли ти публікуєш уперше, Studio просить назву й опис. Натисни Create.
  • Creator Hub є сайтом create.roblox.com. Увійди з тим самим акаунтом і клацни свою гру в списку.
  • Перш ніж гру можна зробити публічною, Roblox може попросити ще дещо, наприклад перевірку віку на акаунті. Сторінка підкаже, чого бракує.
  • Якщо тобі ще немає 18, виконуй цей крок разом із кимось із батьків.
Порада. Прогрес поки не зберігається. Коли гравець виходить, гроші зникають. Збереження даних — це складніший урок.
Цей крок у мене не виходить

Спершу перевір ці три речі

  • Назва кожної частини й кожного скрипта точно така, як в уроці, з тими самими великими літерами.
  • Скрипт лежить у правильному об'єкті. Подивись на підпис над блоком із кодом.
  • Відкрий вікно Output через меню Window. Червоний текст показує скрипт і рядок, у якому є проблема.

Усе ще не виходить? Напиши нам →

Тепер змін це сам

  • Зроби так, щоб кожен куб коштував 10 грошей замість 5.
  • Додай третій скидач, який коштує 200 грошей.
  • Зроби другий скидач швидшим за перший. Яке число треба змінити?