You can definitely do a fighting game in C2. It takes some work and planning to set up, but it's not all that difficult.
Small video of my own system in action. It's a scaled-down gif so the quality is kinda cack, but you get the idea:
Here's a rough breakdown of how it works.
One player controller (green). Two collision boxes to check for obstacles (yellow and orange). And one collision box for attacks (red).
The green controller object has the platform behaviour attached and holds all the instance variables for that fighter. The actual sprite is a separate object pinned to it. All the sprite animations are controlled by instance variables fed to it from the controller object. The attack collision box gets enabled at the hit frame of the animation, for instance between frame 3 and 4, and then gets disabled again right after. A separate function to check distance, collision against the opponent sprite, and damage dealing gets called at that point.
I use the platform behaviour as a base, but rolling your own physics calculations might be a better idea. I just didn't want to deal with any more of that stuff than I had to.
Fighters can push each other on moving i.e. if player 1 walks into player 2 then player 1's speed is divided by 2 and player 2 gets pushed at the same speed. Except when up against a wall. I use an extra collision box (the yellow and orange ones) behind each player to check for those situations.
There's some extra event code to deal with jumping scenarios. For instance, should a jumping player land in front of or behind the other player when close? For instance (pseudo-code):
if (player1.x < player2.x + 50 AND player1.x > player2.x - 50) // are they close enough to do a check?
if (player1.y > player2.y - 20) // is player1 less than 20 units above player2? If so, restrict X movement
if (player2.Bool_CantBePushed == TRUE) // If there's some obstacle behind player2 player1 X speed always becomes zero
player1.speed = 0;
else // move freely
// stop X movement and push player2 away
if ( player1.x < player2.x AND player1.facing = facingRight )
player2.speed = player2.speed + player1.speed;
player1.speed = 0;
// increase player1 speed if far enough along to jump over
else if ( player1.x >= player2.x AND player1.facing = facingRight )
player1.speed = player1.speed * 1.25;
That's the broad strokes of it, hope it helps