Translating from scale to offset

I’m creating a drag + drop script but i want to switch it to scale for more so its more accurate to what it will look like in-game

How could i do this?

–Key part of script i need help with

for i, slot in pairs(BackpackSlots:GetChildren()) do
	if slot:IsA("Frame") then
		local MouseOffset

		slot.UIDragDetector.DragStart:Connect(function (InputPosition)
			MouseOffset = InputPosition - slot.AbsolutePosition

			-- Adjust the dragging frame's position to match the slot's position exactly
			DraggingFrame.Position = UDim2.new(0, (InputPosition.X - MouseOffset.X) + 1.4, 0, InputPosition.Y - MouseOffset.Y + (slot.AbsoluteSize.Y / 2.275))
			DraggingFrame.BackgroundTransparency = 0
		end)

		slot.UIDragDetector.DragContinue:Connect(function (InputPosition)
			
			DraggingFrame.Position = UDim2.new(0, (InputPosition.X - MouseOffset.X) + 1.4, 0, InputPosition.Y - MouseOffset.Y + (slot.AbsoluteSize.Y / 2.275))
		end)

		slot.UIDragDetector.DragEnd:Connect(function ()
			DraggingFrame.BackgroundTransparency = 1
		end)
	end
end

here this should work

for i, slot in pairs(BackpackSlots:GetChildren()) do
    if slot:IsA("Frame") then
        local MouseOffset

        slot.UIDragDetector.DragStart:Connect(function(InputPosition)
            MouseOffset = InputPosition - slot.AbsolutePosition

           
            local parentSize = DraggingFrame.Parent.AbsoluteSize
            local scaleX = (InputPosition.X - MouseOffset.X) / parentSize.X
            local scaleY = (InputPosition.Y - MouseOffset.Y + (slot.AbsoluteSize.Y / 2.275)) / parentSize.Y

            
            DraggingFrame.Position = UDim2.new(scaleX, 0, scaleY, 0)
            DraggingFrame.BackgroundTransparency = 0
        end)

        slot.UIDragDetector.DragContinue:Connect(function(InputPosition)
            
            local parentSize = DraggingFrame.Parent.AbsoluteSize
            local scaleX = (InputPosition.X - MouseOffset.X) / parentSize.X
            local scaleY = (InputPosition.Y - MouseOffset.Y + (slot.AbsoluteSize.Y / 2.275)) / parentSize.Y

           
            DraggingFrame.Position = UDim2.new(scaleX, 0, scaleY, 0)
        end)

        slot.UIDragDetector.DragEnd:Connect(function()
            DraggingFrame.BackgroundTransparency = 1
        end)
    end
end
1 Like

i found a solution for this thanks for giving a reply though!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.