Change players state and controls in-game

Let’s say the player is an ice cube. You control it like a normal player.
On press of a button, ice transforms (with animation) into water. You control it completely different than the ice cube.

Another great example would be: Player is human being and has normal FPS controls. On press of a button human transforms into birds and now has completely different controls.

Now, my question is, what would be easier and better:

  1. make one object with animation transition and to stay in that state of anim. until button is pressed again
  2. make two object: ice and water. Ice has an animation of turning into water. So replace ice (with animation) with water object.

2 - only need one animation (transformation); just play it in reverse. I suspect you’ll find various reasons to have two distinct objects.