Menu
CoddyTech

표지판

Coddy의 Roblox 게임: 팩토리 타이쿤 코스 레슨. 22개 중 7번째.

공장 위의 표지판에는 공장이 누구의 것인지 적혀 있습니다. 파트의 표면에 표시되는 텍스트는 파트 안에 있는 SurfaceGui이며, TextLabel을 포함합니다. 이름이 지정된 레이블은 나중에 다시 쉽게 찾을 수 있고, 작은 함수 하나로 표지판의 모든 변경 사항을 한곳에서 관리할 수 있습니다.

local gui = Instance.new("SurfaceGui")
gui.Parent = tycoon.Sign

local signLabel = Instance.new("TextLabel")
signLabel.Name = "Status"
signLabel.Size = UDim2.fromScale(1, 1)
signLabel.TextScaled = true
signLabel.Text = "Opening soon"
signLabel.Parent = gui

UDim2.fromScale(1, 1)은 레이블이 표면 전체를 채우게 하고, TextScaled는 글자가 표면에 맞게 조정되도록 합니다.

challenge icon

챌린지

중급

공장 위에 소유자가 누구인지 표시하는 표지판을 놓으세요.

  1. tycoon.Sign에 Status라는 이름의 TextLabel을 담은 SurfaceGui를 추가하고, 표지판을 꽉 채우도록 설정한 다음, 크기에 맞게 조정된 텍스트로 Step on the green pad to claim this factory를 표시하세요.
  2. 해당 레이블의 Text를 설정하는 setSign(text)를 작성하세요.
  3. 공장을 차지하면 setSign(player.Name .. "'s Factory")를 호출하세요.

‘플레이’를 누르고 초록색 패드 위에 올라서세요. 표지판에 이름이 표시됩니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local Debris = game:GetService("Debris")
local Settings = require(game.ReplicatedStorage.Settings)

local tycoon = workspace.Tycoon
local owner = nil

print("Ore is worth " .. Settings.OreValue .. " Cash")

-- 모든 플레이어는 리더보드에 Cash를 받습니다
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Parent = leaderstats
end)

-- Lesson 7: 여기에 Sign을 배치합니다

-- Ore: dropper 아래로 떨어지는, Cash 가치가 있는 작은 부품
local function dropOre(dropper)
	local ore = Instance.new("Part")
	ore.Name = "Ore"
	ore.Size = Vector3.new(1, 1, 1)
	ore.Color = Color3.fromRGB(150, 150, 160)
	ore.Position = dropper.Position - Vector3.new(0, 2.5, 0)
	ore:SetAttribute("Value", Settings.OreValue)
	if math.random() < Settings.GoldChance then
		ore.Color = Color3.fromRGB(255, 200, 40)
		ore.Material = Enum.Material.Neon
		ore:SetAttribute("Value", Settings.OreValue * 5)
	end
	ore.Parent = workspace
	Debris:AddItem(ore, 20)
end

local function startDropper(dropper)
	task.spawn(function()
		while dropper:IsDescendantOf(workspace) do
			dropOre(dropper)
			task.wait(Settings.DropInterval)
		end
	end)
end

-- 컨베이어는 위에 놓인 모든 것을 운반합니다
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- 수집기는 ore를 Cash로 바꿉니다
tycoon.Collector.Touched:Connect(function(hit)
	if hit.Name == "Ore" then
		local value = hit:GetAttribute("Value")
		hit:Destroy()
		if owner then
			owner.leaderstats.Cash.Value += value
		end
	end
end)

-- 소유권 획득: 패드를 가장 먼저 밟은 플레이어가 공장의 주인이 됩니다
local claimPad = tycoon.ClaimPad
claimPad.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	if player and not owner then
		owner = player
		claimPad.Color = Color3.fromRGB(120, 120, 120)
		claimPad.Material = Enum.Material.SmoothPlastic
		for _, dropper in CollectionService:GetTagged("Dropper") do
			if dropper:IsDescendantOf(workspace) then
				startDropper(dropper)
			end
		end
	end
end)

Roblox 게임: 팩토리 타이쿤의 모든 레슨

직접 연습해 보세요: Roblox 플레이그라운드