Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema na colisão da personagem com o cenário

Ao mover a personagem podemos ir para cima e mudar para a esquerda sem ter que soltar a tela "W" por exemplo. Ocorre que se a personagem estiver andando para cima e colidir com o cenário, ao pressionar a tela "A" para que ela vá para a esquerda, ela parece ficar "agarrada". Como podemos resolver essa questão?

3 respostas
solução!

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.

Bom dia Ricardo,

Vou tentar aplicar essa solução e qualquer coisa volto a pedir ajuda.

Grande abraço e parabéns pelos cursos! Esperamos novas sequências =)

Leandro

Obrigado! Que bom que está gostando. Qualquer duvida pode postar aqui no forum. Fique a vontade

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software