Lua Roblox 如何将指定玩家的生命值设置为 0

我正在尝试制作一个 Roblox 游戏,将每个玩家生成到地图上并让他们尝试互相杀死。但是,当最后一个玩家留下时,我不知道该如何将他重生在我的游戏大厅中。我已经将所有玩家存储在一个数组中,在一个人死亡后,他们就会从数组中删除。我已经尝试将最后一个玩家的生命值设置为 0,但是无论如何,存储在数组中的玩家方式都无法获得他们的 humanoid(人形机器人)。

以下是我的代码:

if #plrs == 1 then
    plrs[1].Character.Humanoid.Health = 0
end

我是这样创建我的 plrs 数组的:

local plrs = {}

for i, player in pairs(game.Players:GetPlayers()) do
    if player then
        table.insert(plrs,player) --将每个玩家添加到 Player 数组中
    end
end

感谢任何帮助。

点赞
用户12666680
用户12666680

你在这里有一个标准的索引错误。在代码中,你总是从0开始计数,并且实际上你正在请求你的数组中的(plrs[1])第二个项目。只需将你的代码更改为:

if #plrs == 1 then
    plrs[0].Character.Humanoid.Health = 0
end
2020-01-07 23:13:09
用户5373986
用户5373986

我建议使用 player:LoadCharacter() 来强制刷新一个新的玩家角色。这种方法有一个优点,那就是不会显示死亡屏幕,而是在销毁旧角色后立即生成一个新角色。

请注意,这种方法将清空背包和 playerGui,以防这些在你的游戏中很重要。


另外,获取玩家时没有必要使用 for 循环,因为函数 game.Players:GetPlayers() 返回的已经是数组。除非你在那个循环中对玩家进行了额外的检查,否则你只需要这样:

local plrs = game.Players:GetPlayers()
2020-01-08 11:31:37
用户11521654
用户11521654

谢谢大家尝试帮助我。

经过大量的研究和回顾我的代码,我找到了自己的问题。

if #plrs == 1 then
    player.Character.Humanoid.Health = 0
end
2020-01-12 19:07:48