Menu
CoddyTech

谁碰到了它?

本课属于 Coddy Lua 学习旅程的“Roblox 游戏脚本编写”单元。第 14 课,共 25 课。

hit 是身体部位,hit.Parent 是这个身体部位所属的角色。Players 服务会将角色转换为控制该角色的玩家:

local Players = game:GetService("Players")
local player = Players:GetPlayerFromCharacter(hit.Parent)

如果碰到物体的不是角色(比如球或掉落的砖块),GetPlayerFromCharacter 会返回 nil,所以使用前要先检查它:

local player = Players:GetPlayerFromCharacter(hit.Parent)
if player then
	print(player.Name .. " found the secret")
end

拿到玩家后,你就可以访问它内部的所有内容,比如玩家的记分板:player.leaderstats.Coins.Value。使用 = 设置 Value 会替换原来的值。

challenge icon

挑战

中等

找到宝藏的玩家可获得 100 个 Coins。每位玩家都已有 leaderstats,其中包含 Coins。

  1. 在 player 这一行下方添加 if player then ... end,这样球就不会导致错误。
  2. 在其中打印玩家的名字:print(player.Name)。
  3. 然后将 player.leaderstats.Coins.Value 设置为 100。

按“运行”,然后踩上宝藏:输出会显示你的名字,Coins 会增加到 100。然后点击“检查”。

亲手试试

local Players = game:GetService("Players")
local treasure = script.Parent

treasure.Touched:Connect(function(hit)
	local player = Players:GetPlayerFromCharacter(hit.Parent)
	-- 如果是玩家:输出玩家的名字,并将其 Coins 设置为 100
end)

Roblox 游戏脚本编写中的所有课

自己练习: Lua 在线编译器