【问题标题】:Damage player when touching water terrain接触水地形时伤害玩家
【发布时间】:2020-09-03 00:45:51
【问题描述】:

当玩家在 ROBLOX 中接触某些水域时,我试图降低他们的生命值。 我不确定为什么这不起作用,但事实并非如此。如果有人可以帮助我,那就太好了。

while wait() do
    local player = game.Workspace.LocalPlayer
    local headLoc = game.Workspace.Terrain:WorldToCell(player.Character.Head.Position)
    local hasAnyWater = game.Workspace.Terrain:GetWaterCell(headLoc.x, headLoc.y, headLoc.z)
    if player.Character.Humanoid.Health ~= 0 then
        if hasAnyWater then
            player.Character.Humanoid:TakeDamage(0.2)
        end
    end
end

【问题讨论】:

    标签: roblox


    【解决方案1】:

    如果你检查你的输出窗口,你会明白为什么:

    LocalPlayer is not a valid member of Workspace
    

    LocalPlayer 在“Players”中,所以你应该声明:

    local player = game.Players.LocalPlayer
    

    因此,如果您更改它,并将其放在 LocalScript 中,例如在 StarterPlayerScripts 文件夹中,一切都会如您所愿。

    【讨论】:

    • 是的。我注意到并纠正了它。无论如何,还是谢谢伙计。
    【解决方案2】:

    解决了。

    local player = game:GetService("Players").LocalPlayer
    while wait(0.5) do
    local headLoc = game.Workspace.Terrain:WorldToCell(player.Character.LowerTorso.Position) or game.Workspace.Terrain:WorldToCell(player.Character.Torso.Position)
    local hasAnyWater = game.Workspace.Terrain:GetWaterCell(headLoc.x, headLoc.y, headLoc.z)
    if player.Character.Humanoid.Health ~= 0 then
        if hasAnyWater then
                player.Character.Humanoid:TakeDamage(8)
            end
        end
    end
    

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 2019-11-19
      • 2020-05-18
      • 2021-11-09
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多