Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Grid Snapping Issues when trying to find distance between?

Asked by 4 years ago
Edited 4 years ago

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.

https://imgur.com/a/GnRaRu4

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.

https://imgur.com/a/yVF607V

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.

Answer this question