我正在尝试创建一个类似于《半条命 2》第 2 集的插件系统。该脚本的作用是每当插头上触发接近提示时。它应该旋转并定位到玩家手臂上并焊接。
每当您激活接近提示时。其旋转和焊接良好。但它位于世界原点 (0, 0, 0) 我尝试多次更改它的定位方式。我认为这只是导致问题的部分的定位线,但我不能 100% 确定。我没有收到任何错误。 (主要部件还焊接有其他部件,这可能会导致问题
for _, plug in pairs(collectionservice:GetTagged('Plug')) do
plug.PrimaryPart.ProximityPrompt.Triggered:Connect(function(plr)
local plugval = plr.Character:WaitForChild('HoldingPlug', 1)
plugval.Value = plug
plug.PrimaryPart.Anchored = false
plr.Character:WaitForChild('Humanoid'):UnequipTools()
game:GetService('ReplicatedStorage').Events.EquipPlug:FireClient(plr)
local arm = plr.Character:FindFirstChild('Right Arm')
plug.PrimaryPart.CFrame = CFrame.new(arm.CFrame.Position.X,arm.CFrame.Position.Y,arm.CFrame.Position.Z)
local rx,ry,rz = plr.Character:FindFirstChild('Right Arm').CFrame:ToOrientation()
plug.PrimaryPart.CFrame = CFrame.Angles(math.rad(rx),math.rad(ry),math.rad(90))
local weld = Instance.new('WeldConstraint')
weld.Parent = plug.PrimaryPart
weld.Name = 'PlayerWeld'
weld.Part0 = arm
weld.Part1 = plug.PrimaryPart
plug.PrimaryPart.CanCollide = false
end)
end
CFrame.Angles 创建一个新的 CFrame,您想要的是将它们相加(乘以替换 CFrames 的添加,不知道为什么) 所以:
plug.PrimaryPart.CFrame = plug.PrimaryPart.CFrame * CFrame.Angles(math.rad(rx),math.rad(ry),math.rad(90))