Bom dia Leandro, tudo bom?
Realmente o jogo tem esse problema. Acontece que toda vez que colidimos com o cenário nós estamos chamando o método andaParaTras
, que faz com que o personagem ande para trás no eixo X e Y.
Para que a parede não agarre o personagem precisariamos verificar qual lado do personagem está colidindo e travar apenas um eixo.
Para isso, você pode utilizar o parâmetro que recebemos no evento de colisão. Esse evento pode receber dois parâmetros, sendo o primeiro o colisor do outro objeto e o segundo parâmetro o colisor do próprio personagem
Se você olhar na documentação ( http://www.cocos2d-x.org/docs/creator/en/physics/collision/collision-manager.html ) o colisor tem uma propriedade chamada aabb. Essa propriedade te retorna onde está a borda do seu colisor com isso, você consegue descobrir qual lado está colidindo e travar apenas aquele eixo.
onCollisionStay : function(outro, eu){
console.log(outro.world.aabb);
console.log(eu.world.aabb);
}
Preferimos deixar isso de fora do curso por ser algo mais avançado. A ideia era fazer cursos mais iniciais sobre a ferramenta.