低数值对脚本没有任何作用

我决定使用自定义生命值来代替 Humanoid 的生命值。新的生命值以数值为基础,工作得很好,我想让人物在几秒钟内冻结,然后将其传送到特定的 Vector3 值。

我尝试了不同的脚本编写方式,但都没有任何作用。我甚至尝试让玩家的位置不同,但也失败了。

--负责治疗玩家 Humanoid 的生命值

-- 声明
local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local PlayerHealth = game.Players.LocalPlayer.Character.Data.Health
local Player = game.Players.LocalPlayer.Character.Humanoid

if PlayerHealth.Value < 30 then
    Player.WalkSpeed = 0
    wait(5)
    Player.WalkSpeed = 16
end

总的来说脚本都无法工作。即使它被启用并放置在正确的位置,它也从未工作过。

点赞
用户10847745
用户10847745

如果我理解正确的话,您希望在角色的健康值降至低于30的值后将其传送到一个位置,先将其冻结几秒钟。 然后,每当玩家的健康值发生变化时,您应该检查PlayerHealth值,通过将其连接到函数来捕获其健康值降至30以下的瞬间:

local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local Data = Figure:WaitForChild("Data") --在脚本运行之后加载数据的情况下
local PlayerHealth = game.Players.LocalPlayer.Character.Data.Health
local Player = game.Players.LocalPlayer.Character.Humanoid

PlayerHealth.Changed:connect(function()--在这里,您需要检查每次值发生变化时的值。
if PlayerHealth.Value < 30 then
    Player.WalkSpeed = 0
    wait(5)
    --在这里可以添加传送。
    --Figure:MoveTo(Position)
    Player.WalkSpeed = 16
end
end)
2018-12-30 13:21:53
用户10823924
用户10823924

如果这是一个服务器脚本,请使用以下更正:

local Figure = script.Parent
local Head = Figure:WaitForChild("Head")
local Humanoid = Figure:WaitForChild("Humanoid")
local Player = game.Players:GetPlayerFromCharacter(Figure) --它将从角色中获取玩家,因为服务器脚本无法访问LocalPlayer
local Health = Player:WaitForChild("Data"):WaitForChild("Health")

Health.Changed:Connect(function()
    if Health.Value < 30 then
        Player.WalkSpeed = 0
        wait(5)
        -- 在这里添加更多代码
        Player.WalkSpeed = 16
    end
end)

否则,如果这是一个本地脚本,只需更改以下内容:

local Player = game.Players:GetPlayerFromCharacter(Figure)

local Player = game.Players.LocalPlayer

希望它起作用,别忘了将其选为正确答案并点赞 = D

2019-01-23 12:50:07