Thanks!
Here’s a bit of a breakdown on that:
So the Character shader has a vertex displacement that lerps each vertex from their original position to an arbitrary Vector3 parameter (“Target”)
I send a Blend parameter in my lerp operation, to which I add a panning noise texture, which gives this back and forth motion on the vertices, to convey some sort of resistance to the attraction, and add some extra flavour to the motion.
I created a basic script which sets the value of this Vector3 parameter to the world position of the gameobject it’s attached on. (in this case, the tip of the arrow)
I then just animate my Blend parameter in my timeline, as well as spawn some trails moving in the same direction to get a better read on the motion.
I have 2 character Gameobjects, the default one, and the ghost. I simply fade in the ghost during the absorption of the default character, and make him vanish afterwards.
For the vanish, there are three elements contributing to the effect, the ghost shader, a smoke simulation, and a particle system.
The ghost shader has some vertex displacement, this time pointing downwards (with a panning noise texture again to avoid uniformity), which I slowly increase over time (as well as the opacity fade).
I used Embergen for the smoke sim, using the mesh as the emitter shape.
Finally a third layer with a VFX Graph particle system, I just baked a point cache of my character pose using the Point cache bake tool of unity (Point Cache Bake Tool | Visual Effect Graph | 7.1.8), and sample my particles from that.
That’s pretty much it, the rest is mostly some camera and particle system work.
Hope that makes sense, hit me up if you have any other questions!