More explanations to how i would do this:
So, to expand on my previous answer, once again over coffee…
The Town: As previously explained, i would create every wall, ceiling and whatever out of planes(or objects you would prefer). These objects would have a rigidbody to them. These rigidbodys would have their positions and rotations frozen so they will stay in place. You can place these houses on a flat plane or a terrain setting. Either way like any house seen today, you would place it on a flat terrain, or your mental and live on a hill 
The Wave: So, i had more of a thought about this and i think i will take back what i said before and change most of it. If some of it sounds similar to what i said before than i am sorry but it is quater to nine in the morning, my face is wrecked :P. So anyway, what i would do is that i would create a ‘grid of planes’ to represent the sea. Now this ‘grid’, dont take it literally as a GRID, what i am thinking is that i can have it placed in a random way that its not in rows and columns( i will attempt to draw a picture and upload it if need be). Reasons why i say make it random and not rows and columns is because the sea + wave would look awful. And we dont want that. Picture a wave now in your head that is made of polygons. You instantly do not think of it to be box like <---- thats what it would like if you made it rows and columns. Make it random so the wave looks realistic.
Now To make the sea look like its moving about, instead of cylinders i thought about using spheres…LOTS OF THEM. I’d place them under the planes and have them randomly moving about. I’d lock their Y axis also, why you ask? Because instead of them random moving up and down at radical places, i myself would place them on the Y axis to where i want them to be. Now when i say moving about to random places, what i mean is that i’d write a script to say, here is your start point, move to the finish point, are you at the finish point? Yes? Move to the new finish point. Now a lot of you are instantly going to think “But wait, how is that going to move the planes about?”. I am pretty sure most of us here at Unity Answers, or more ALL OF US, are scripters/programmers, so maybe there is a way to place a child object on each of the planes to allow it to have a rotation value to create movement on the planes. I suspect i am confusing most of you now, so i will explain.
Picture this, you have 4 Planes, each side by side looking like a box (so if you think coord’s, (1,1),(1,2),(2,1) and (2,2)). Place a sphere under the planes in the middle of the 4 planes(RIGHT IN THE CENTRE). Now i would lock the rigidbody on the sphere on the Y axis but allow it to move like i previously mentioned. Now, on each plane i’d have a child object that is a sphere. This sphere would be placed in the middle of the each plane, right bang in the centre so that the top half of the sphere is above the plane and the bottom half is under the plane. Why you ask? because THAT is going to give the plane the rotation values for it to move in a wave like manner. So when the sphere moves say towards the top left of the plane (1,1) the bottom right of that plane will be down and the top left will be up. Now i can see already that there is a problem there that the other 3 plane wouldnt be affected…well, to fix that, affect them! If the bottom right is going to be down, allow the other 3 planes to match it. Hopefully you see where iam getting at with that, if not, i can explain further with images.
Ok, i think i am getting lost into my own words now, that i am very very tempted to make this (dam you OP). So if you do what i said previously above this paragraph as many times as you want, you would create a sea like looking thing…not good english at all there. Now moving swiftly on to the WAVE!
The Wave:
So whenever you want the wave to crash into the town, simply activate a boolean to start it up. Now this depends on how you want your wave to look because there is 2 ways, if you think of a traditional tsunami, the water looks as if it is raising. Or you could simply create a ‘wave’. Naff it i will just explain both.
Wave A:
Now to simulate a wave in general is going to be pretty difficult, i hope you understand that(or thats really to my thoughts). With this first example, the water raising, i’d simply do what it says, raise the water! Now when it is gaining height, whenever you can, add another plane, thats when you have space. OR. You can have pre build planes in place but will only be able to do anything when they are above ground.
Wave B:
This would mainly be done with an animation but within that animation (inside it) you would have multiple spheres at different sizes and they would be making the impacts and creating the wave itself.
I can explain more on that, but i think this post is long enough as it is! 
The Impact:
So, the overall impact, since everything (everything being the water and the initial wave) will have a collider on it, lets put tags on them. Tags in my opinion are key in this idea of mine. When the water/wave/whatever hits a house, allow the house to realise that THIS SPECIFIC TAG has collided with it and it needs to unfreeze all of its positions and rotations to be able to fly about. Now as we know rigidbodys are lovely things to play with, and we know that we can create bouncy objects or rock solid immovable objects. Lets go wild and make the houses light and moveable, so when the initial impact happens, its crumbles apart.
CONCLUSION:
I think i have written far too much here
So if anyone is confused or has any questions, please feel free to ask. Sadly i cannot make what i am explaining, i wish i could but with my projects needing attention i cannot afford any time to try this out. I will how ever leaveyou my personal e-mail if you want to still communicate after this question/answer. I would also personally like to know how you have achieved this Meltdown as this has been exciting for myself to try and figure things out. Hopefully i have helped and you succeed with this 