If you havent read the articles on UnFly and Guard Breaking, read them. Its for your own good.
Even for MvC2, UnFly is weird. The set of circumstances that causes it are common, but obscure, and the same could be said for those that end it. In addition, I absolutely hate using something that I dont understand. Either there hasnt been much discussion of why it works, or Im just completely blind, and/or out of the loop. Fortunately, I think I have (most of) the reason why it works.
The fact that you have a limited number of actions when you jump (one normal/block and one special/super) is one of the more easily abused parts of the MvC2 system, as everyone who is reading this presumably knows. However, it isnt entirely true. Lets say that Cable guard breaks Magneto as he is coming in, and then surprisingly does an AHVB. Since Magneto blocked Cables j.hp and came out of guard, he shouldnt be able to block until he hits the ground and therefore eats the AHVB. The confusion arises if Magneto pops out of the AHVB, or Cable suddenly decides to aim lower than he should, or does the next AHVB too slowly, or anything else happens to reset the combo meter. If the combo meter ends, and Magneto comes out of hit stun, he is free to block Cables next attack, even if he hasnt landed, thereby violating the all-important limited action rule.
I think that when you are hit by an UnFly-triggering move, the system puts you into something of a False Super Jump State (FSJS, which, if it actually exists, will almost certainly end up with a way cooler-sounding name than that). During FSJS, the game makes you act as if you were super-jumping whenever youre in the air. The obvious time for the programmers to make FSJS end is when you do a normal jump, since if youre in the air otherwise, you mustve super-jumped, in which case, you SHOULD act as if you were super jumping. The loophole comes from ways to be put into a jumping state, other than by jumpingi.e. unflying.
The reason why FSJS exists is pretty clear. Without it, Cable could jump in at Iron Man with j.hk, get stuffed by Iron Mans s.hk, and get repeatedly launched until he dies by Iron Mans s.hk, which he would be unable to block. The set of moves that cause UnFly are the ones where this problem could be abused (ex. CapCom knocking someone into the air, followed by repeated launchings).
As for losing FSJS, and therefore UnFly as well, you can jump, fly and unfly too much, or do a move with recoil (ex. Dooms j.hk), or maybe some other stuff that I dont know about/have forgotten. I have already dealt with the first issue and will leave the remainder as an exercise for the reader.*
*In other words, I havent the foggiest idea why they happen. If someone has some thoughts on this, or at least some bs that sounds good, Id love to hear it.