首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Roblox工作室:鼻咽癌人形,禁止攀登

Roblox工作室:鼻咽癌人形,禁止攀登
EN

Stack Overflow用户
提问于 2020-04-26 09:12:36
回答 1查看 581关注 0票数 0

我是个新手,正在尝试使用一些基本的功能。我正在生成一些NPCs,我想阻止他们爬梯子。在阅读了文档之后,我似乎可以通过使用Humanoid:SetStateEnabled(Enum.HumanoidStateType.Climbing, false)来做到这一点。我在创建NPC后立即插入该代码,如下所示:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
  Setting climbing to false
  false

这正是我所期望的,同时请注意,它不会输出“状态已更改”,因此我知道代码的其他部分没有干扰。

然而,这实际上并没有阻止NPC的攀登,事实上,如果我立即在控制台(在roblox studio的底部显示"Run a command“)中键入以下命令:

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

输出为true

为什么变量不能“坚持”呢?我需要把这段代码放在别的地方吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-26 11:51:04

SetStateEnabled似乎不会复制到客户端。您的Run-a-command命令针对客户端的工作区执行,并且在那里仍然有效。

如果您将其放在服务器上(例如,将以下内容添加到工作区脚本中):

代码语言:javascript
复制
spawn(function()
    while (true) do     
        print(workspace.Enemies.Zombie.Humanoid:GetStateEnabled(Enum.HumanoidStateType.Climbing))
        wait(0.5)
    end
end)

...您将在服务器上看到,该属性实际上是false。

更新:

要在客户端设置它,你可以在你的敌人文件夹上挂上一个处理程序,它将总是为你所有的僵尸设置人形的爬升状态:

代码语言:javascript
复制
workspace.Enemies.ChildAdded:Connect(function(child)
    if (child.Name == "Zombie") then
        child:WaitForChild("Humanoid"):SetStateEnabled(Enum.HumanoidStateType.Climbing, false)
    end
end)

只需将上面的代码放入StarterPlayerScripts的LocalScript中即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61434631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档