Eu tenho um jogo de plataforma 2D, onde o jogador sempre corre para a direita, mas o terreno não é sempre horizontal. Exemplo:
Eu implementei um sistema de colisão de caixa delimitadora que apenas verifica interseções com a caixa do jogador e os outros blocos, para impedir que o jogador corra se você encontrar um grande bloco, para que você precise pular, mas quando eu subir escadas, quero que ele correr sem problemas, como ele está no chão horizontal. Com o sistema de colisão, você precisa pular as escadas para passar por elas!
Pensei em gerar uma linha entre as bordas das escadas e impor o movimento do jogador nessa linha ... O que você acha? Existe algo mais inteligente para fazer?
fonte
A maioria dos métodos que encontrei já foi declarada acima - mas ainda há mais um que não foi mencionado. Quando o jogador encontrar um obstáculo vertical que seja curto o suficiente (digamos, 1/3 da altura), basta colocá-lo no topo. O Minecraft e o mecanismo de origem, por exemplo, adotam essa abordagem nesse tipo de situação. Além disso, esse método permite que você ainda use o AABB puro para toda a física, sem deixar o jogador com a dor de constantemente ter que pular escadas.
fonte
Atualmente, estou trabalhando em uma parte semelhante de um mecanismo, e a maneira como lidei com escadas / inclinações é contando os pixels transparentes na textura da minha rampa e compensando o objeto do jogador pela quantidade encontrada.
É semelhante à idéia do mapa de altura detalhada neste artigo: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves
Eu imagino que é exatamente isso que você gostaria de fazer, e você pode optar por reproduzir uma animação diferente que seja reproduzida de acordo com a ascensão das escadas.
Também há uma boa visão geral dos diferentes conceitos de declive neste artigo: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/
fonte