Hey
This is hard for me to explain so please bare with me.
In my scene I have objects (Mods) that can be dragged around from above, these then snap to a grid. This works for any objects that has dimensions that are odd (eg 1x1). Here is part of the script here used to round them:
function Mod1x1()
{
currentPos = transform.position;
transform.position = Vector3 (Mathf .Round (currentPos.x), 0, Mathf .Round (currentPos.z));
}
However if the modules are even in scale (eg 2x2), when their positions are rounded they do not align with the grid correctly. I need their positions to be offset by 0.5. The problem is when I offset them by 0.5, they then want to get rounded up to the next grid area. This results in a messy loop with the Mod skipping between 2 positions, when being dragged around.
My current work around is to offset it by slightly under 0.5:
function Mod2x2()
{
currentPos = transform.position;
transform.position = Vector3 (Mathf .Round (currentPos.x) + 0.499999, 0, Mathf .Round (currentPos.z) + 0.499999);
}
I do not like this method, as they are not truly in the right position.
Any ideas on how can I can solve this? Maybe not even using Mathf.Round?
Many thanks,
Magnus