Salut !
Alors pour une formule générale du tilemapping, j´ai bien une piste.
Cette piste coince cependant pour le fait que tu cites " ce qui signifie que le personnage doit passer à travers dans un sens ( saut) et rester dessus dans l´autre" --> qui n´est pas logique en réalité
( ce qui se comprend ! )
Avant tout, tu fais une fonction capable de te dire si oui ou non tu as le droit d´etre a l´endroit ou tu es :
int IsPossible(Bouding_box* mec,Monde* monde,Vecteur& normale);
qui te renverra 0 ou 1 si tu as le droit ou non d´etre la ou tu es.
Cette fonction doit, en outre, te renvoyer la normale a l´endroit ou tu touches :
si la fonction te renvoie 0, alors tu es dans le vide, et dans ce cas, tu renvoies vecteur NULL.
Sinon, si tu touches, a toi de préciser la direction de la normale au sol : c´est la que tu pourras faire tes pentes :
un bloc en pente renverra un vecteur en biais 
De la, tu peux faire des blocs qui ont n´importe quelle tronche, a toi de savoir calculer le vecteur normal a n´importe quelle position, en fonction du type de brique touchée 
A préciser que la norme de ce vecteur sera également importante : elle déterminera le coefficient de rebond de la brique !
Ensuite, tu ajoutes un petit moteur physique rudimentaire.
A chaque déplacement, tu regardes si tu atteris dans un sol ou non.
Si ce n´est pas le cas, la boucle est finie.
Si c´est le cas, tu dois trouver la position limite : pour cela, trouve la position entre la précédente et la courante ( interdite) qui est permise.
( dans un espace discret, tu peux te contenter d´un bete for, dans un espace reel, la dichotomie, avec un epsilon peut etre appliqué)
Replace ton sprite ici, et a la prochaine itération, ajoute la normale dans ta résultante de forces !
Enjoy !