In my game, I need to make sure that when a building is placed, there are no crevices or openings beneath the base plate brick of my building models. All of these are named Torso and are set as the primary part of the model. When a player clicks, to place a building, the client sends a request to the server about placing it, and it can go through a simple check: Will the building be on the same plane as where the client put it? If not, remove it. Then it checks for if the player who placed the building is still there and can pay for it (the client has already confirmed that he or she has enough money so I figured ANOTHER check for that would be pointless.)
Since the building is centered on the point where the player clicked, on rough terrain, buildings can end up "dangling" over edges Like in this picture: http://prntscr.com/4inl86
The code below is what I use to check for building placement. I hope someone knows some sort of method, I'm completely lost. Thanks for your help!
game.Workspace.Inputs.ChildAdded:connect(function(c) if c.Name == "Building" then local bldg = storage[c.Value]:Clone() bldg.Team.Value = c.Team.Value bldg.Parent = game.Workspace.TestBuild bldg:MoveTo(c.Location.Value) if math.abs(bldg.Torso.Position.Y-Location.Value.Y) < .2 then if something then -- something, implying whatever I have to do to check for uneven terrain. local paid = false for _,v in pairs(game.Player:getChildren()) do if v.TeamColor == c.Team.Value then v.Cash.Value = v.Cash.Value-storage[desired].Cost.Value paid = true end end if paid then if c:findFirstChild(TPTank) then c.TPTank.Value:destroy() end bldg.Parent = game.Workspace else bldg:destroy() end end else bldg:destroy() end end c:destroy() end)