I have been stuck on this all day. The issue is that whenever I place blocks of different height, but same size of 4 on the X and Z, the part wants to go either into the ground more than it should, or into the air more than it should. I've tried using the knowledge of what I know, but haven't been able to figure it out.
I have some pictures showing the what the issue is and what the issue should look like when it is fixed; they are listed below...
This is what the issue is at the moment, as you can see they are not incrementing by 4 because they are in the ground a certain amount, which is something i cannot determine.
This is what the issue should look like when it's resolved; when it is actually working and stackable with all blocks that have an increment of 4.
Here is the code that I have been working to try and get it to snap to the grid properly. Most of the variable names that are not listed should be self explanatory.
HighlightModel is the model that is being dragged before being placed, basically a clone of the blocks seen in the image. GridPlacementPart is what the baseplate is made up of, (1024) blocks that are 4x4x4` PlacedBuildingObject is the same thing as the HighlightModel. GridSize is a value of 4
function Grid:returnGridSnapCFrame(Mouse, HighlightModel, GridSize, Player)
local PlateGridParts = GetLocalPlayerPlate(Player).PlateGridParts
local TargetSurface = Mouse.TargetSurface
local Target = Mouse.Target
local HighlightModelSize = GetObjectSize(HighlightModel)
if(Target) then
if(Target.Name == "GridPlacementPart" or Target.Name == "PlacedBuildingObject") then
if(TargetSurface == Enum.NormalId.Top) then
if(HighlightModelSize.Y > 4 and HighlightModelSize.Y < 12) then
return Target.Position + Vector3.new(0,GridSize%HighlightModelSize.Y + (Target.Size.Y / 2), 0)
elseif(HighlightModelSize.Y >= 12) then
return Target.Position + Vector3.new(0,(GridSize%HighlightModelSize.Y), 0)
else
return Target.Position + Vector3.new(0,HighlightModelSize.Y, 0)
end
end
end
end
end
Please, help is appreciated and I would really like it if this issue could finally be resolved.
