Michael,
normalmente isso é feito criando-se um grid virtual.
Seria uma matriz com posicoes, e vc define em quais posicoes do grid o seu personagem pode se movimentar.
Para facilitar isso, pode usar a estrutura de tiles, com camadas.
Pode criar varias camadas no grid, cada uma com um objetivo.
- Layer Background - com elementos q nao afetam o jogo
- Layer colisao - elementos que colidem e bloqueiam o player
Ja deu uma olhada no Tiled?
http://www.mapeditor.org/
Acho que implementar o padrao com tiles, resolveria seu problema.
Apoena