2 timers: the first one will keep track of how long the character flies, the second - the recharge of the ability (if the recharge is not needed, then the second timer is not needed);
if the player has the ability to fly in 4 directions, then Top-Down Movement behavior is required;
falling of the character can be realized using the same behavior as the control (just always move down);
the number of variables will depend on your implementation (I suppose, at least you may need the IsCanFly variable, which will take into account whether you can fly or not, and the IsFly variable, which will take into account whether the character is flying or not).
It depends on how you want to implement it. As you wrote that a bat should fly in 4 directions for 2 seconds. How do you imagine the flight itself:
moving in 4 directions without gravity, flapping wings - in this case, depending on the pressed flight direction button, you simply move the soap in the desired direction (this can be done using the Top-Down Movement behavior);
if you want the flight to be realistic and the player would need to “flap his wings” to maintain the mouse in the air and change the height, then here you need a physics engine and settings for the character, so that when the buttons are pressed, the mouse receives an impulse or force is applied to movement.