The butterfly Blueprint Actor does not move around the level in and of itself; rather, its components do. The butterfly is made up of two wing meshes parented to a single body mesh. Each mesh is animated by timeline nodes, causing the wings to flap while the body bobs up and down. The Event Graph drives the butterfly components to move forward while steering to face random points within a radius, picking a new point to fly towards every few seconds.
A vector variable named Attractor Location is Editable, meaning that it is exposed to the user. This variable also displays a 3D widget, allowing it to be moved around to determine the center point for the butterfly's flight range. After a certain amount of flying, the script steers the butterfly back toward this spot, which prevents it from straying too far away.
While the butterfly is in flight, it continuously draws a line trace ahead of itself to check for obstacles. When this line trace hits a surface, it provides the location and normal (surface angle) of the impact point. This data is then used to calculate the angle and position the butterfly should assume when it lands. A Timeline then plays and Linear Interpolate nodes smoothly transition the butterfly from its current location to its landed position.
Another Timeline-animated system exists to drive the parameters of the Material applied to the butterfly's wings, causing them to ripple with an electrical light effect.
As an experiment, create a Static Mesh somewhere near the tree and watch the butterfly behavior. As long as the mesh is in the butterfly's flight path and has a collision surface, the AI system will detect it as a landable surface and the butterfly will attempt to land on it.