我目前正在ROBLOX上开发一款游戏,其中包含大量的NPC。我需要一种方法使玩家无法以任何方式移动它们。我曾尝试锚定HumanoidRootPart,但效果很好,但它使NPC无法移动。
有人可以帮忙吗?
答案 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”类的孩子的密度和摩擦力较低。