Menu
CoddyTech

收集器

Coddy Roblox 游戏:工厂大亨 课程的第 4 课,共 22 课。

传送带末端发着绿光的方块就是收集器。矿石碰到它时,会被转换成现金:收集器读取矿石的值,销毁矿石并支付现金。

collector.Touched:Connect(function(hit)
	if hit.Name == "Ore" then
		local value = hit:GetAttribute("Value")
		hit:Destroy()
		-- 支付 value 对应的金额
	end
end)

先检查名称:玩家和其他东西也可能碰到收集器。销毁矿石前先读取它的值。目前,收集器会向游戏中的每位玩家付款;下一章中,只有工厂的所有者会收到付款。

challenge icon

挑战

简单

在绿色收集器处把矿石兑换成 Cash。

  1. 连接 tycoon.Collector.Touched;仅当部件名为 Ore 时才执行操作。
  2. 读取它的 Value 属性,然后销毁它。
  3. 把这个值加到每位玩家的 Cash 中。

按下“开始”:每块矿石都会消失在收集器中,你的 Cash 会增加 10。然后按“检查”。

亲手试试

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

local tycoon = workspace.Tycoon

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)

-- Ore:一个价值 Cash 的小零件,会从 dropper 下方掉落
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)
	ore.Parent = workspace
end

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

startDropper(tycoon.Dropper)

-- 传送带会运送放在上面的所有东西
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- 第 4 课:在这里添加 Collector

Roblox 游戏:工厂大亨中的所有课

自己练习: Roblox 在线编辑器