谁碰到了它?
本课属于 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 会替换原来的值。
挑战
中等找到宝藏的玩家可获得 100 个 Coins。每位玩家都已有 leaderstats,其中包含 Coins。
- 在
player这一行下方添加if player then ... end,这样球就不会导致错误。 - 在其中打印玩家的名字:
print(player.Name)。 - 然后将
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 在线编译器