零件定位到 WorldOrigin 而不是预期的 CFrame

问题描述 投票:0回答:1

我正在尝试创建一个类似于《半条命 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
lua roblox roblox-studio
1个回答
0
投票

CFrame.Angles 创建一个新的 CFrame,您想要的是将它们相加(乘以替换 CFrames 的添加,不知道为什么) 所以:

plug.PrimaryPart.CFrame = plug.PrimaryPart.CFrame * CFrame.Angles(math.rad(rx),math.rad(ry),math.rad(90))
© www.soinside.com 2019 - 2024. All rights reserved.