Better way to flatten terrain at runtime under a building?

I followed one tutorial on getting and setting height on your terrain, which got me to being able to flatten a square. But it’s not really that great.

In my picture below, you can see a straight tent on the left, and one with a little rotation on the right. Both get their 9 meter (set by stat) cube under them. And it took some work to get the one centered in the first place.

1.) Does anyone know of an easy way to do this better? Where it flattens just whats under the mesh?

2.) My terrain is also made up of a few terrains, so I imagine I’ll run into an overlap at some point, since when you spawn the building, it raycasts down to find the terrain below it to modify, so if you were to build it close to a seam of 2 terrains, only one will get modified…

3.) My first two problems, is there any way to remove the grass from the terrain in these areas? There has to be right??

4.) Following my 3rd problem, Is there a way to change the texture in that area to a dirt texture? Since you’re “messing up the ground by building on it”.

If anyone could help I would be in your debt.

  1. It depends on the geometry of the terrain, does it have enough vertices to flatten only under the mesh?

  2. Maybe raycast from each corner or use boxcast and check which terrains and triangles are hit and flatten them.

  3. Yes, you have to modify the UVs: Unity - Scripting API: Mesh.uv

  4. I think so, depends on your texture/shader setup but can’t give an answer how to do it.

Anyway, I would just create that ground under the tent in to the actual model and add that to terrain without flattening if it is going to be just a mound of dirt.

Well it’s just unity terrain at it’s core. So the grass is on that. Same with the textures.