Can someone help me with grid placement. If you would like me to show a part of the current placement script, i can. But i would like to know how to change the object movement to a grid. The object is controlled from the mouse.

I have tried this but i get an error:

```
local ObjectAngles = CFrame.Angles(0, math.rad(RotatingAmount), 0)
local grid = 2
local ObjectCFrame = Vector3.new(math.round(mouse.Hit.Position.X / grid), math.round(mouse.Hit.Position.Y / grid + PrevieuwObject.PrimaryPart.Size.Y / 2), math.round(mouse.Hit.Position.Z / grid))* grid
PrevieuwObject:SetPrimaryPartCFrame(ObjectCFrame * ObjectAngles)
```

You get that error because your â€śObjectCFrameâ€ť is a Vector3, not a CFrame. Use CFrame.new() instead of Vector3.new().

And to round a value to a certain grid, you need to round the value multiplied by your gridâ€™s size, before dividing the result. You seem to be doing it the other way around.

Instead of

```
math.round(mouse.Hit.Position.X / grid)*grid
```

Try something like

```
math.round(mouse.Hit.Position.X*gridSize)/gridSize
```

1 Like

Hey, so i tried using it and i got an error in the output:

Here is the script incase if i did it incorrect:

```
local grid = 1
local ObjectCFrame = CFrame.new(math.round(mouse.Hit.Position.X*grid), math.round(mouse.Hit.Position.Y + PrevieuwObject.PrimaryPart.Size.Y / 2*grid), math.round(mouse.Hit.Position.Z*grid)) / grid
local ObjectAngles = CFrame.Angles(0, math.rad(RotatingAmount), 0)
PrevieuwObject:SetPrimaryPartCFrame(ObjectCFrame * ObjectAngles)
```

Maybe try this?

```
local grid = 1
local ObjectCFrame = CFrame.new(math.round(mouse.Hit.Position.X*grid)/grid, math.round(mouse.Hit.Position.Y + PreviewObject.PrimaryPart.Size.Y / 2*grid)/grid, math.round(mouse.Hit.Position.Z*grid) / grid)
local ObjectAngles = CFrame.Angles(0, math.rad(RotatingAmount), 0)
PreviewObject:SetPrimaryPartCFrame(ObjectCFrame * ObjectAngles)
```

Thank you. I didnt notice that i did it incorrect. Onc again thank you for the help!

1 Like

Actually, use this as it is better organized:

```
local grid = 1
local hit = mouse.Hit.Position
local size = PreviewObject.PrimaryPart.Size
local c = CFrame.new(
math.round(hit.X*grid)/grid,
math.round(hit.Y + size.Y / 2*grid)/grid,
math.round(hit.Z*grid) / grid
) * CFrame.Angles(0, math.rad(RotatingAmount), 0)
PreviewObject:SetPrimaryPartCFrame(c)
```

1 Like

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