在人形机器人上应用leaderstat值

问题描述 投票:0回答:1

我正在制作一个按钮来增加“速度”的leaderstat值,然后将该leaderstat值应用到玩家人形机器人的WalkSpeed值上。 (使它们相同)

事情是这样的。我已经完成了那部分。问题是,当玩家死亡和重生时我需要它留下来,另外,我的代码似乎也无法加入游戏。

加入游戏的代码,在ServerScriptService中:

local plrs = game:GetService("Players")

plrs.PlayerAdded:Connect(function(plr)
    task.wait(3)
    local humanoid = if plr.Character then plr.Character:FindFirstChild("Humanoid") else nil
    if humanoid then
        print("Found Humanoid")
        plr:FindFirstChild("Humanoid").WalkSpeed = plr.leaderstats.Speed.value   
    end
end)

错误如下:

ServerScriptService.Script:10: attempt to index nil with 'WalkSpeed'

我知道问题是它没有找到leaderstat值,但我不知道如何解决它。另外,我需要一种方法让它在死亡和重生后保留下来。这对我的游戏玩法至关重要。我认为最好的方法是找到玩家/角色何时重生,然后将 Leaderstat 值应用为玩家的 WalkSpeed 值。在加入游戏的第一部分之后,我只是不知道从哪里开始。

lua roblox
1个回答
0
投票

当您尝试获取 WalkSpeed 时,您没有正确引用 Humanoid。当您应该使用

plr:FindFirstChild("Humanoid")
或已有的
plr.Character:FindFirstChild("Humanoid")
变量时,您正在使用
humanoid
。目前,您尝试在 Player 中查找 Humanoid,但会导致
attempt to index nil with 'WalkSpeed'
,因为 Humanoid 不在 Player 中,而是在 Player.Character 中,因此无法找到 WalkSpeed 和 Humanoid。

下面我更正了脚本,以在尝试获取玩家的 WalkSpeed 时使用

humanoid
变量。

local plrs = game:GetService("Players")

plrs.PlayerAdded:Connect(function(plr)
    task.wait(3)
    local humanoid = if plr.Character then plr.Character:FindFirstChild("Humanoid") else nil
    if humanoid then
        print("Found Humanoid")
        humanoid.WalkSpeed = plr.leaderstats.Speed.value   
    end
end)`
© www.soinside.com 2019 - 2024. All rights reserved.