This was a fun little metroidvania. Maybe with the bats they could fly in to attack then sort of circle out, just so they don't group up on you where the attack hitbox can't reach. Once I found out I could cast a spell it pretty well resolved the issue, but as others have said they can be a nuisance
Viewing post in DeathFall jam comments
Out of curiosity, I downloaded the project file and looked up how you're handling the bats. I think using collisions might be making things more tricky, because onCollisionExit makes the bat forget the player and then go looking for it, so if you did have the bats circling, they'd go to leave the player then immediately turn around and go looking for them again.
What you might try is not worrying about that part, but instead have the bat always know where the player is. Add a float timer and a Vector2 offsetPos at the top.
When the bat hits the player collider and deals damage, set the timer to some random value and the offset position (offsetPos) to a vector2 that, when added to the player position, would place the bat just beyond the player's attack.
If the timer is greater than 0, subtract Time.deltaTime from it, and have the bat move toward player.position + offsetPos. Else if the timer is less than 0, swoop in for the attack. When it collides, it'll deal damage, reset the timer and offset, and swoop back out.