如何检查玩家死亡?(Roblox Studio)

我有一个脚本,用于控制玩家饥饿和口渴导致死亡。我使用 while 循环语句来控制玩家没有食物或水时的健康度降低。当玩家的健康度小于或等于零时,我还使用另一个 while 循环语句来重置饥饿和口渴。但是当我运行脚本时,它什么也不做。

local data = require(workspace.playerStats)
local player = script.Parent
local humanoid = player:WaitForChild("Humanoid");

data.hunger = 0
data.thirst = 0

while data.hunger or data.thirst <= 0 do
    wait(0.1)
    humanoid.Health-=1
end

while humanoid.Health <= 0 do
    data.hunger = 100
    data.thirst = 100
end

如果重要的话,我将此脚本放置在“StarterPlayer.StarterCharacterScripts”中。

原文链接 https://stackoverflow.com/questions/69589597

点赞
stackoverflow用户16667848
stackoverflow用户16667848

第一个 while 语句产生结果,防止代码执行到其他 while 语句。使用 spawn 创建一个新的线程并允许代码继续执行。

local data = require(workspace.playerStats)
local player = script.Parent
local humanoid = player:WaitForChild("Humanoid");

data.hunger = 0
data.thirst = 0

task.spawn(function()
    while data.hunger or data.thirst <= 0 do
        wait(0.1)
        humanoid.Health-=1
    end
end)

while humanoid.Health <= 0 do
    data.hunger = 100
    data.thirst = 100
end

为了检测死亡,我建议使用 Humanoid.Dead 事件。

2021-10-15 19:44:03
stackoverflow用户16952594
stackoverflow用户16952594

我弄清楚了。这是我什么都不擅长说的一些话和我做错的东西的混合物。在while语句中我写了这个:

while data.hunger or data.thirst <= 0 do
-- 写代码的地方
end

我做错的事情是我没有在or的两边都加上<=

所以这是正确的代码:

while data.hunger <= 0 or data.thirst <= do
-- 写代码的地方
end
2021-10-15 20:49:39