How to Shape shift with different controls

How would I go about the following…

Making your Main Character transform (shape shift) into something else with a different controller and back with the press of a button while sharing the same speed, location ect (basically transform)

Two ways I can think of off the top of my head:

  1. Using materials it’s totally possible to deform the mesh. You could deform, change material and then reform into the new mesh.

  2. Just have two totally separate characters which can deform using scaling, and kind of ‘produce’ one from the other while you’re scaling them strangely.

But, this is a WHOLE thing, so I can’t really give a tuut on it, it would literally take tens of pages. Here’s a classic on mesh distortion using world position: