Roblox:使NPC不动吗?

时间:2018-09-13 02:22:42

标签: lua roblox

我目前正在ROBLOX上开发一款游戏,其中包含大量的NPC。我需要一种方法使玩家无法以任何方式移动它们。我曾尝试锚定HumanoidRootPart,但效果很好,但它使NPC无法移动。

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

如果可能,您可以将NPC焊接到地面。

这可能有效:

local weld = Instance.new("WeldConstraint")
weld.Part0 = part
weld.Part1 = otherPart
weld.Parent = part

有关焊接的更多信息here


如果您不需要玩家剪辑上述NPC,则可以“解锁” NPC,允许玩家在其中移动而不移动。

local function setDescendantCollisionGroup(Descendant)
    if Descendant:IsA("BasePart") and Descendant.CanCollide then
        -- set collision group
    end
end

model.DescendantAdded:Connect(setDescendantCollisionGroup)
for _, descendant in pairs(model:GetDescendants()) do
    setDescendantCollisionGroup(descendant)
end

答案 1 :(得分:0)

尝试这样的事情:

    local NPC = workspace.NPC --The NPC variable
    NPC.HumanoidRootPart.Mass = 69420

它应该会让 NPC 变得更重!
当你想要它移动时:

    local NPC = workspace.NPC --The NPC variable
    NPC.HumanoidRootPart.Mass = 10

那会让 NPC 更轻!
所以这是最终的脚本:

    local NPC = workspace.NPC --The NPC variable
    local humanoid = NPC:WaitForChild('Humanoid') --NPC's humanoid
    local hrp = NPC.HumanoidRootPart --NPC's HumanoidRootPart
    
    local mass1 = 69420
    local mass2 = 10
    
    humanoid.Running:Connect(function(speed)
        if speed > 0.001 then
            hrp.Mass = mass2
        else
            hrp.Mass = mass1
        end
    end)

确保在 ServerScript 中编写该代码!
如果需要,将脚本放入 NPC 中。

答案 2 :(得分:-1)

这应该可以使用property完成。创建一个起始角色,以便玩家佩戴此角色,然后将其自定义物理属性“摩擦”,“密度”修改为非常小的数字。

您还应该能够将这样的脚本放入脚本中,例如当玩家加入游戏时,“ Part”类的孩子的密度和摩擦力较低。