This tutorial on implementing player swimming might be helpful to you: [Click me!][1]
And if you're curious the full tutorial series can be found here: [Click me!][2]
In my opinion making swimming/diving smooth will mostly be an issue of good animation. I think a simple boolean like you suggested would be fine, or using a trigger system in front of your bodies of water would work just as well.
[1]: http://www.youtube.com/watch?v=nINxHbPhOXY&feature=player_embedded
[2]: http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial
↧