接触水地形时伤害玩家

Damage player when touching water terrain

我正在尝试降低玩家在 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

如果你检查你的输出 window 你会明白为什么:

LocalPlayer is not a valid member of Workspace

LocalPlayer 在"Players",所以你应该声明:

local player = game.Players.LocalPlayer

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

已解决。

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