Roblox Studio:NPC Humanoid,禁止攀爬

Roblox Studio: NPC Humanoid, disabling climbing

我对 Roblox studio 还很陌生,正在尝试使用一些基本功能。我正在生成一些 NPC,我想阻止他们爬梯子。阅读文档后,似乎我应该能够通过使用 Humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false) 来做到这一点。我在创建 NPC 后立即插入该代码,如下所示:

local function spawnEnemy()
    local enemy = ServerStorage.Enemies.Zombie:Clone()
    enemy.Parent = workspace.Enemies

    print("Setting climbing to false")
    enemy.Humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
    print(enemy.Humanoid:GetStateEnabled(Enum.HumanoidStateType.Climbing))
    enemy.Humanoid.StateEnabledChanged:Connect(function()
        print("state changed")
    end)    
end

我开始游戏时的输出如下:

  Setting climbing to false
  false

这正是我所期望的,还要注意它不会输出 "state changed" 所以我知道代码的其他部分没有干扰。

然而,这实际上并不能阻止 NPC 攀爬,事实上,如果我立即输入控制台(在 roblox studio 的底部显示 "Run a command")这个命令:

print(workspace.Enemies.Zombie.Humanoid:GetStateEnabled(Enum.HumanoidStateType.Climbing))

输出为true

为什么变量 "stick" 没有?我需要将此代码放在其他地方吗?

SetStateEnabled 似乎没有复制到客户端。您的 运行-a-command 命令针对客户端的工作区执行,它仍然是正确的。

如果将相同的内容放在服务器上(比如将以下内容添加到工作区脚本中):

spawn(function()
    while (true) do     
        print(workspace.Enemies.Zombie.Humanoid:GetStateEnabled(Enum.HumanoidStateType.Climbing))
        wait(0.5)
    end
end)

...您会在服务器上看到 属性 实际上是错误的。

更新:

要在客户端上进行设置,您只需在 Enemies 文件夹上连接一个处理程序,它将始终为所有僵尸设置 Humanoid 的攀爬状态:

workspace.Enemies.ChildAdded:Connect(function(child)
    if (child.Name == "Zombie") then
        child:WaitForChild("Humanoid"):SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
    end
end)

只需将上面的内容放入 StarterPlayerScripts 中的 LocalScript 即可。