Best way to make "Void-proof" placement system?

So i’ve been at this on and off for couple days now…

Goal: Intuitive-ish building tool, that works without any reference parts, preferably one that points mouse towards the object without any offset.

Normally, you would cast a ray from mouse position, to where the mouse is pointing, and do :FindPartOnRay() to get target and position of where it’s intersecting, then use that to change the position of your model in say X axis.
Problem with that is you need a base to work off of, if not, the ray will just go your specified length or hit a bound made by roblox (not sure on that one), causing the projection on X/Z plane to be quite unpredictable.

I’ve thought about few solutions, like (1) keeping a constant distance between camera and mouse position in world (also tried making the distance adjustable), (2) finding the ray length needed to place the model on a constant Y level, and (3) recreating the arrow-based movement like in studio.

The first one was hard to get used to, but did kind of do what I wanted.
The second one was the closest to what I had hoped for, the mouse would be over the part
i’m moving, but couldn’t figure out a good way to change the Y reference just as intuitively.
The third one is what i’m working on now, but issue with that is… i’m not sure how i’m supposed to do it :grin:

Currently:
Movement_Tool
As you can see it’s far from Studio level lol
At the moment all I have is determining which axis to move on, and placing it in mouse’s position…

If I want the mouse to stay in the same relative position to the axis. Do I need to find the delta in 3D from previous X,Y or Z position of the mouse, and apply that? How do I make it work similarly to studio?

Or perhaps there’s a better solution? I want it to be intuitive to use, it doesn’t have to have arrows, but if it doesn’t, I’d prefer that, when moving an object, the mouse would actually point to the object, instead of going into the abyss.

Any help appreciated.

1 Like

Sorry I don’t have any footage of the other two ideas… :frowning:

No need to bump your post, edit the OP instead.


To make it move relative to the mouses position dimply get the mouses hit position and subtract that by the parts position:

local DeltaPosition = Hit.Position - Part.Position

--// Positioning

Part.Position - Mouse.Position + DeltaPosition
1 Like

Alright thanks ill try it out!

Didnt work sadly

3o chrrrrrrrrrrrrrrrrrr