This is really cool. Very satisfying once you get used to it and can start looking to hit multiple enemies with one jump. The slight cooldown after jumping incentivizes this strategy. And it's good design when you the optimal strategy is the fun strategy.
You have a slight 'bug' with your movement. When moving at a diagonal, you move faster. If you want to fix it, do .normalize() on your input vector. Although I kinda got used to it so I knew I could move slightly faster and optimize my movement if I used diagonals. So if you were to fix this, you might have to boost the move speed to keep the feel of the extra speed the diagonals give you.
How you mixed the rolling with the ground pounding really helped the flow of your game. I've seen some other games have a long roll animation so you have to wait for the animation to finish before you can make plans based on what was rolled. So to coopt the rolling and the attack animation where you are invulnerable really makes the most of the rolling downtime. And when you land, you've killed the nearby enemies and know your next range so you can get to lining up your jump.
The enemy spawn indicators is a good idea in general, but this game pulls double duty with them. Because your attack takes some time for you to fly across the screen, you can try to time your landing with the enemy spawning which feels great when it works out. It also partially alleviates the problems of a ground pound as an attack - the enemies might move while you're in the air. So it's handy to know where they will be in a sec when they spawn. It's noticeably harder to hit the enemies that you didn't spawn-camp. The ! vs !! is a neat touch to give the player a bit of info about what enemies are spawning so you might prioritize an enemy spawning farther away if it might be a scarier enemy.
A weird thing I noticed was that I got very tunnel-visioned on lining up my jumps that I basically ignored/didn't notice enemy attacks. So I wasn't really dodging stuff, just getting lucky and being airborne most of the time. Not that there's anything wrong with the attacks visibility-wise, just an odd observation I had.