← 모든 가이드
가이드 2

첫 번째 tycoon 만들기

Dropper가 cube를 만들고, Conveyor가 나르고, Collector가 cash로 바꿔 주고, 버튼으로 두 번째 dropper를 사요.

무료60분 · 초급 · Roblox Studio
1
단계 1 / 9

플레이스 준비하기

  1. Roblox Studio를 열고 New Experience를 눌러 Baseplate 템플릿을 골라요.
  2. Explorer에서 Workspace 위에 마우스를 올리고 +를 눌러 Folder를 추가해요. 이름은 Tycoon으로 해요.
  3. 이 가이드에서 만드는 모든 것은 이 Folder 안에 넣어요. 그러면 Explorer가 깔끔해져요.

더 자세히 보기

  • Baseplate 템플릿은 시작 화면의 템플릿 목록에 있어요.
  • +를 누르면 목록이 열려요. Folder라고 쓰면 빨리 찾을 수 있어요. 찾으면 클릭해요.
  • Folder 이름을 바꾸려면 한 번 클릭하고 F2를 누른 다음 Tycoon을 쓰고 Enter를 눌러요.
  • Mac에서는 이 가이드에 Ctrl이라고 나올 때마다 Cmd 키를 써요.
팁. part를 만들면 바로 이름을 바꿔요. 스크립트는 이름으로 part를 찾기 때문에, 이름이 아직 Part인 part는 작동하지 않아요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

2
단계 2 / 9

모든 플레이어에게 cash 주기

  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라는 이름의 Folder는 특별해요. Roblox가 그 안의 값을 플레이어 목록에 보여 줘요.
  • IntValue는 정수를 담아요. 여기서는 플레이어의 cash를 담아요.

더 자세히 보기

  • ServerScriptService는 Explorer 목록에 있어요. 여기에 있는 script는 서버에서 실행돼서 플레이어가 바꿀 수 없어요.
  • script는 새 탭에서 열려요. 코드 안을 클릭하고 Ctrl+A를 누른 다음 Ctrl+V를 눌러 전부 바꿔요.
  • 내 플레이스 이름이 적힌 탭을 클릭해서 내 세상으로 돌아가요.
  • 플레이어 목록은 게임 화면 오른쪽 위에 있어요. F5를 누르면 시작하고 Shift+F5를 누르면 멈춰요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

3
단계 3 / 9

Dropper 만들기

  1. Tycoon Folder 안에 Part를 추가해요. Size를 4, 1, 4로 하고, Anchored를 켜고, 이름을 Dropper로 해요.
  2. Move 도구(Ctrl+2)로 바닥에서 약 10 studs 위로 올려요.
  3. Dropper에 Script를 추가하고 이 코드를 붙여 넣어요.
  4. Play를 눌러요. 2초마다 노란 cube가 하나씩 떨어져요.
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는 코드로 새 part를 만들어요.
  • Position은 cube를 dropper보다 2 studs 아래에 놓아요.
  • Debris는 cube를 20초 뒤에 지워서, 오래된 cube가 쌓이지 않게 해요.

더 자세히 보기

  • part를 Folder 안에 넣으려면 Explorer에서 part 이름을 Tycoon이라는 이름 위로 끌어다 놓아요.
  • Move 도구로 초록색 화살표를 위로 끌어요. 높이는 Properties의 Position 칸에서 가운데 숫자예요.
  • cube는 dropper 아래 2 studs 지점에 나타나서 떨어져요. dropper가 너무 낮으면 cube가 그 밑에 쌓여요.
  • 첫 번째 cube는 게임이 시작되고 2초 뒤에 나와요.
자주 하는 실수. cube가 안 나와요: 스크립트가 Dropper 안에 있는지, Dropper가 Anchored인지 확인해요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

4
단계 4 / 9

Conveyor 달기

  1. Part를 추가하고, Size를 6, 1, 30으로 하고, Anchored를 켜고, 이름을 Conveyor로 해요.
  2. 한쪽 끝이 dropper 바로 아래에 오도록 바닥에 놓아요.
  3. Conveyor에 Script를 추가하고 이 코드를 붙여 넣어요.
  4. Play를 눌러요. cube가 conveyor 위에 떨어져서 미끄러져 가요.
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

각 부분이 하는 일

  • AssemblyLinearVelocity는 part 위에 있는 물건이 얼마나 빨리 움직일지 Roblox에 알려 줘요.
  • LookVector는 part의 앞면이 향하는 방향이에요. 숫자 8은 초당 studs로 나타낸 속도예요.

더 자세히 보기

  • 모든 part에는 앞쪽이 있어요. conveyor는 cube를 앞쪽으로 밀어요.
  • conveyor의 긴 쪽, 즉 30 studs인 쪽은 dropper에서 멀어지는 쪽, 그러니까 collector가 서게 될 곳을 향해야 해요.
  • conveyor 자체는 움직이지 않아요. 그 위에 올라간 것들만 미끄러져요.
  • cube가 옆으로 떨어지면 conveyor를 더 넓히거나 dropper를 conveyor 가운데로 옮겨요.
자주 하는 실수. cube가 반대쪽으로 미끄러져요: Rotate 도구(Ctrl+4)로 conveyor를 180도 돌려요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

5
단계 5 / 9

cube 모으기

  1. Conveyor의 먼 쪽 끝에 Part를 추가해요. Size를 6, 4, 1로 하고, Anchored를 켜고, 초록색으로 만들고, 이름을 Collector로 해요.
  2. cube가 부딪히도록 벽처럼 세워 줘요.
  3. Collector에 Script를 추가하고 이 코드를 붙여 넣어요.
  4. Play를 눌러요. collector에 닿는 cube마다 Cash에 5가 더해져요.
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는 cube를 게임에서 없애요.
  • 반복문은 서버에 있는 모든 플레이어에게 cash 5를 줘요. 구역마다 주인이 한 명인 tycoon은 심화 수업에서 배워요.

더 자세히 보기

  • Size 6, 4, 1은 이미 세워진 모양이에요. 너비 6, 높이 4, 두께 1이에요. conveyor 끝을 가로질러 닫힌 문처럼 놓아요.
  • 아래쪽 모서리가 conveyor에 닿아야 해요. 그래야 cube가 밑으로 빠져나가지 못해요.
  • 초록색으로 만들려면 Properties에서 Color 칸을 클릭해요.
  • 테스트하려면 F5를 누르고 플레이어 목록을 봐요. cube가 벽에 닿을 때마다 Cash가 5씩 올라가요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

6
단계 6 / 9

두 번째 dropper 준비하기

  1. Dropper를 선택하고 Ctrl+D를 눌러요. 복사본 이름을 Dropper2로 하고, 첫 번째 옆으로 옮겨요. 여전히 conveyor 위에 있어야 해요.
  2. Dropper2를 Workspace에서 ServerStorage로 끌어다 놓아요.
  3. 세상에서 사라져요. ServerStorage에 있는 오브젝트는 스크립트가 다시 꺼내 줄 때까지 거기서 기다려요.

더 자세히 보기

  • 복사본은 원본 바로 위에 있어요. Move 도구로 옆으로 끌어서 둘 다 보이게 해요.
  • F2로 복사본의 이름을 바꿔요. 이름은 Dropper2여야 해요. D는 대문자이고 띄어쓰기는 없어요.
  • ServerStorage는 Explorer 목록에 있어요. Dropper2 이름을 그 위로 끌어다 놓아요.
  • 복사본 안의 script도 같이 따라왔어요. 다시 추가하지 않아도 돼요.
팁. ServerStorage 안의 스크립트는 실행되지 않아요. 그래서 두 번째 dropper는 누군가 살 때까지 조용히 있어요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

7
단계 7 / 9

구매 버튼 만들기

  1. conveyor 가까운 바닥에 Part를 추가해요. Size를 4, 1, 4로 하고, Anchored를 켜고, 밝은 파란색으로 만들고, 이름을 BuyDropper로 해요.
  2. BuyDropper에 Script를 추가하고 이 코드를 붙여 넣어요.
  3. 버튼에 글씨를 붙이려면 BuyDropper 위에 마우스를 올리고 +를 눌러 BillboardGui를 추가해요. Size는 {0, 200}, {0, 50}으로, StudsOffset은 0, 3, 0으로 해요.
  4. BillboardGui 안에 TextLabel을 추가해요. 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는 가격이에요. 숫자를 바꾸면 버튼이 더 싸지거나 더 비싸져요.
  • 스크립트는 진짜 플레이어가 버튼을 밟았는지, 그 플레이어에게 cash가 충분한지 확인해요.
  • Dropper2를 workspace로 옮기면 켜져요. 스크립트도 바로 실행되기 시작해요.

더 자세히 보기

  • 플레이어는 버튼 위로 걸어가서 사요. 그러니까 닿기 쉽게 바닥에 놓아요.
  • Size와 StudsOffset은 Properties에서 칸을 클릭하고, 괄호와 쉼표까지 보이는 그대로 숫자를 쓴 다음 Enter를 눌러요.
  • Text는 TextLabel의 property예요. Text 칸을 클릭하고 글을 쓴 다음 Enter를 눌러요.
  • 이름표는 버튼 위에 떠 있어요. 안 보이면 StudsOffset의 가운데 숫자를 올려요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

8
단계 8 / 9

전체 흐름 테스트하기

  1. F5를 눌러요. cube가 떨어지고, conveyor를 타고, cash로 바뀌는 모습을 봐요.
  2. cash가 50이 될 때까지 기다렸다가 파란 버튼을 밟아요.
  3. 두 번째 dropper가 나타나고, 버튼은 사라지고, cash가 두 배로 빨리 늘어요.
  4. Shift+F5를 눌러 멈춰요. 뭔가 잘 안 되면 Window 메뉴에서 Output 창을 열고 빨간 글씨를 읽어요.

더 자세히 보기

  • cube 10개가 필요해서, 50 cash가 되려면 적어도 20초가 걸려요.
  • 사고 나면 Cash가 50 줄어요. 맞는 거예요. dropper 값을 낸 거예요.
  • 버튼은 산 뒤에 사라져요. 그래서 두 번 살 수 없어요.
  • 두 번째 dropper가 엉뚱한 곳에 나타나면 게임을 멈추고, ServerStorage에 있는 Dropper2를 Workspace로 다시 끌어내서 옮긴 다음, 다시 ServerStorage로 끌어넣어요.
자주 하는 실수. Cash가 전혀 안 바뀌어요: 떨어지는 part의 이름은 dropper 스크립트에 나온 그대로 Cube여야 해요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

9
단계 9 / 9

게시하기

  1. File → Publish to Roblox를 골라요. 게임 이름과 짧은 설명을 적어요.
  2. Creator Hub 웹사이트에서 내 게임을 열고 Maturity 설문을 채워요.
  3. 게임을 Public으로 바꾸고 친구에게 링크를 보내요.

더 자세히 보기

  • 처음 게시할 때 Studio가 이름과 설명을 물어봐요. Create를 눌러요.
  • Creator Hub는 create.roblox.com 웹사이트예요. 같은 계정으로 로그인하고 목록에서 내 게임을 클릭해요.
  • 게임을 공개하려면 Roblox가 더 요구할 수도 있어요. 예를 들면 계정의 나이 확인이에요. 무엇이 빠졌는지 페이지가 알려 줘요.
  • 18세 미만이라면 이 단계는 부모님과 함께 해요.
팁. 아직은 진행 상황이 저장되지 않아요. 플레이어가 나가면 cash가 사라져요. 데이터 저장은 심화 수업에서 배워요.
이 단계가 잘 안 돼요

먼저 이 세 가지를 확인해요

  • 모든 part와 script의 이름이 가이드와 똑같은지 확인해요. 대문자도 똑같아야 해요.
  • script가 알맞은 오브젝트 안에 있는지 확인해요. 코드 상자 위의 이름표를 봐요.
  • Window 메뉴에서 Output 창을 열어요. 빨간 글씨가 문제가 있는 script와 줄을 알려 줘요.

그래도 안 되나요? 우리에게 메일을 보내요 →

이제 직접 바꿔 봐요

  • cube 하나의 값을 5 대신 cash 10으로 바꿔 봐요.
  • cash 200짜리 세 번째 dropper를 추가해 봐요.
  • 두 번째 dropper를 첫 번째보다 빠르게 만들어 봐요. 어떤 숫자를 바꿔야 할까요?