I'm making a tool that is used off of the **Dragger **Instance and for some reason when I try to go in first person or zoomed in to a close perspective of my characters head, the object that is being dragged on the grid is placed elsewhere away from my mouse's position.
GIF: https://gyazo.com/c13e4049d407bc22e9b81390fad043b2
I took the importance of the code and pasted it here, some variables might be missing but they aren't important for understanding, the name should be enough.
Server Side
ObjectToServer.OnServerEvent:Connect(function(_, Id, ObjCF)
local ModelPlaced = RegisteredObjects[Id]:Clone();
ModelPlaced.PrimaryPart.CFrame = ObjCF;
local ModelOwner = Instance.new("ObjectValue", ModelPlaced);
ModelOwner.Value = _;
for i,v in next, ModelPlaced:GetDescendants() do
pcall(function()
v.CanCollide = true;
v.Transparency = 0;
end)
end
if(objectIsInBuildingBoundary(_, ModelPlaced)) then
ModelPlaced.Parent = getOccupiedPlate(_).StoredObjects;
end
end)
Client Side
local CurrentPlacingModel;
local CurrentPlacingModelID;
local isPlacingObject = false;
local Connection = game:GetService("RunService").RenderStepped;
local Abs = math.abs;
function Module:SelectObject(uniqueId)
local function Select()
ClearPlacingObjects(Player);
local PlayerPlate = getOccupiedPlate(Player);
local StoredObjects = PlayerPlate.StoredObjects;
local RegisteredItem = RegisteredItems[uniqueId];
if(RegisteredItem) then
CurrentPlacingModelID = uniqueId;
isPlacingObject = true;
local outlineObject = RegisteredItems[uniqueId]:Clone();
outlineObject.Parent, outlineObject.Name = StoredObjects, "PlacingObject";
outlineObject.PrimaryPart.CFrame = CFrame.new(Mouse.Hit.p);
local pPart = outlineObject.PrimaryPart;
for i, Object in next, outlineObject:GetDescendants() do
pcall(function()
Object.Transparency = 0.5;
end)
end
Dragger:MouseDown(pPart, Vector3.new(0, 0, 0), {pPart});
end
end
if(uniqueId ~= CurrentPlacingModelID) then
if(isPlacingObject) then
updateCurrentPlacingModel(uniqueId, RegisteredItems[uniqueId]);
else
Select();
end
else
Select();
end
end
function PlaceObject()
if(isPlacingObject) then
local PlayerPlate = getOccupiedPlate(Player);
local StoredObjects = PlayerPlate.StoredObjects;
local FakeObject = CurrentPlacingModel:Clone();
local ObjectCF = FakeObject.PrimaryPart.CFrame;
FakeObject.Name, FakeObject.Parent = "Model#" .. tostring(math.random(1,1000000)), StoredObjects;
ObjectToServer:FireServer(CurrentPlacingModelID, ObjectCF);
Dragger:MouseUp();
FakeObject:Destroy();
isPlacingObject = false;
Module:SelectObject(CurrentPlacingModelID);
end
end
Connection:Connect(function()
if(isPlacingObject == true) then
CurrentPlacingModel = getOccupiedPlate(Player).StoredObjects:FindFirstChild("PlacingObject") or false;
Mouse.TargetFilter = CurrentPlacingModel;
Dragger:MouseMove(Mouse.UnitRay);
end
end)
I tried setting the TargetFilter to the object being dragged but that didn't work. I feel like it has something to do with the Mouse.UnitRay but I might be wrong.
Any help would be appreciated, thanks!

1 comment
https://gyazo.com/af9b8b8f9f2875175430143d7e97fe98 is the gyazo incase the one above doesn't open