遊戲的目標試看看哪個玩家能活得最久,因此每次玩家死亡之後就需要將他的分數歸零
你將需要從玩家取得 Character 模型以偵測玩家是否死亡。這個模型只在玩家物件載入時被加到遊戲中,而且你能夠使用 CharacterAdded
事件來偵聽角色是否準備好使用了
onCharacterAdded
的函式帶兩個參數:一個是 **character ,**一個是 player-- SetupPoints.lua
local Players = game:GetService("Players")
local function onCharacterAdded(character, player)
end
local function onPlayerAdded(player)
local leaderstats = Instance.new("Folder")
end
儘管你加入 player 到 onCharacterAdded 函式的參數列中,真正的 CharacterAdded 事件只回傳 character,而不包含 player
-- SetupPoints.lua
local function onPlayerAdded(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = playerlocal
points = Instance.new("IntValue")
points.Name = "Points"
points.Value = 0
points.Parent = leaderstats
-- 想辦法從有的地方傳入
player.CharacterAdded:Connect(function(character)
onCharacterAdded(character, player)
end)
end
當玩家死亡,他們的 Humanoid
會自動發送一個 Died
事件。你能夠使用這個事件來尋找何時要重置他們的分數
你可以在 Character 模型找到 Humanoid
,但模型的內容只有在玩家生成時才會組裝完成。為了確保你的程式會等到 Humanoid 物件載入後才安然執行,使用 WaitForChild
函式,你可以在任何上層物件呼叫它,傳入你所尋找的子物件的名稱字串
character:WaitForChild("Humanoid")
所回傳的 Humanoid-- SetupPoints.lua
local Players = game:GetService("Players")
local function onCharacterAdded(character, player)
local humanoid = character:WaitForChild("Humanoid") --確保等到 Humanoid 載入後才執行
end
你需要用來連接 Died 事件的函式非常短,而且只需用到一次,所以我們選擇再一次使用匿名函式
points
的變數,用來儲存玩家的 Points 物件points
名為 Value
的屬性值為 0-- SetupPoints.lua
local Players = game:GetService("Players")
local function onCharacterAdded(character, player)
local humanoid = character:WaitForChild("Humanoid")
-- 因為這個被連接的方法只會用到一次,所以改用匿名方式處理
humanoid.Died:Connect(function()
local points = player.leaderstats.Points
points.Value = 0 -- 將分數歸零
end)
end