收集器
Coddy Roblox 游戏:工厂大亨 课程的第 4 课,共 22 课。
传送带末端发着绿光的方块就是收集器。矿石碰到它时,会被转换成现金:收集器读取矿石的值,销毁矿石并支付现金。
collector.Touched:Connect(function(hit)
if hit.Name == "Ore" then
local value = hit:GetAttribute("Value")
hit:Destroy()
-- 支付 value 对应的金额
end
end)先检查名称:玩家和其他东西也可能碰到收集器。销毁矿石前先读取它的值。目前,收集器会向游戏中的每位玩家付款;下一章中,只有工厂的所有者会收到付款。
挑战
简单在绿色收集器处把矿石兑换成 Cash。
- 连接
tycoon.Collector.Touched;仅当部件名为Ore时才执行操作。 - 读取它的
Value属性,然后销毁它。 - 把这个值加到每位玩家的 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 在线编辑器