如何使用附件移动多个部件

我正在尝试制作一个东西,当你移动鼠标时,一个部分会移动

arm

当鼠标移动时,我希望这个 arm 移动,并使用定向使一切跟随 (并保持在某些部分的中心)

这是我移动部分的代码

-- This is using remote events. This is local
game.ReplicatedStorage.JudgeCam2.OnClientEvent:Connect(function()
    game.Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
    wait(.1)
    local TS = game:GetService("TweenService")
    TS:Create(game.Workspace.CurrentCamera, TweenInfo.new(.75,Enum.EasingStyle.Linear,Enum.EasingDirection.Out,0,false,0), {CFrame = game.Workspace.CamParts.JudgeCam2.CFrame}):Play()
    local GUN_ICON = "rbxasset://textures/GunCursor.png"
    local GUN_RELOAD_ICON = "rbxasset://textures/GunWaitCursor.png"

    mouse.Icon = GUN_ICON
    local UIS = game:GetService("UserInputService")
    local LastMousePos = nil  -- Used to calculate how far mouse has moved

    UIS.InputChanged:Connect(function(input, gameProcessedEvent)
        local CurrentMousePos1 = Vector2.new(mouse.X,mouse.Y)
        if gameProcessedEvent then return end
        if input.UserInputType == Enum.UserInputType.MouseMovement then -- runs every time mouse is moved
            if LastMousePos == nil then
                game.ReplicatedStorage.MoveJudge2:FireServer(mouse,CurrentMousePos1,CurrentMousePos1)
            else
                game.ReplicatedStorage.MoveJudge2:FireServer(mouse,CurrentMousePos1,LastMousePos)
            end
            LastMousePos = CurrentMousePos1
        end
    end)

    UIS.InputBegan:Connect(function(KeyCode)
        if KeyCode.UserInputType == Enum.UserInputType.MouseButton1 and debouce2 == false then
            debouce2 = true
            mouse.Icon = GUN_RELOAD_ICON
            wait(6)
            debouce2 = false
        end
    end)
end)
-- This is the server
game.ReplicatedStorage.MoveJudge2.OnServerEvent:Connect(function(plr, mouse,CurrentMousePos,LastMousePos)
    print("(" .. tostring(CurrentMousePos) .. " - " .. tostring(LastMousePos) .. ")/5")
    local change = (CurrentMousePos - LastMousePos)/5 -- calculates distance mouse traveled (/5 to lower sensitivity)
    game.Workspace.Arm2.CFrame = game.Workspace.Arm2.CFrame * CFrame.Angles(0,math.rad(change.X),-math.rad(change.Y))
end)

是否有任何可以使用位置或附加来实现这个的方法?

原文链接 https://stackoverflow.com/questions/70999286

点赞