I'm working on a platformer for the iPhone that is using Box2D and cocos2D.
I'm trying to figure out a way to create similar behavior for my controlled character as is found in the Sonic the Hedgehog games, but maintain use of the Box2D physics library as I want projectiles and some level objects to behave according to realistic physics, along with certain situations involving the controlled character (jumping, barreling into objects, etc.).
The main issues that I'm running into are keeping the character on the ground when going over convex curves and maintaining a sense of contact with the ground until a significant distance from it is achieved. I only want the character to react to left and right commands when on the ground, but my shape tends to leave the ground when going over slight curves such that reaction time is delayed briefly until contact us reestablished. Visually there is no separation, but it's big enough to change the state of being on the ground or not. Also, the character does not "hug" bigger curves the way I would like.
I've tried exerting an additional downward force when on the ground, but it doesn't work quickly enough for bigger curves, and large enough forces to be effective interfere with the regular movement of the character. Any thoughts on these issues?