Faça o jogador correr para as escadas sem problemas

11

Eu tenho um jogo de plataforma 2D, onde o jogador sempre corre para a direita, mas o terreno não é sempre horizontal. Exemplo:

Um 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?

Como aqui

Francesco Bonizzi
fonte

Respostas:

11

Se você é capaz de girar as caixas delimitadoras, eu colocaria uma caixa girada de 45 graus nos pés do jogador e a combinaria com uma caixa não girada para representar o resto do corpo. Isso pode fazer o player deslizar automaticamente sobre qualquer coisa pequena o suficiente.

No entanto, isso provavelmente causaria alguns recortes no modelo do jogador e nas escadas.

Outra idéia é colocar uma caixa delimitadora da cabeça do personagem para ajeitar com largura maior que a caixa do personagem.

Quando o jogador colide com algo que a caixa 'A' não, você pode mover o jogador sobre o que colidiu

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground
Kim
fonte
12

Existem três abordagens gerais para lidar com escadas em videogames:

A abordagem "Mario" é que você deve pular para subir escadas.

A abordagem "Castlevania" é que subir / descer escadas é um tipo diferente de movimento; você deve pressionar 'up' no controlador e uma animação especial de "subir escadas" é reproduzida para atravessar as escadas. Uma variante disso é a abordagem "Resident Evil", onde subir / descer escadas é tratado como uma cena completa que é reproduzida quando o jogador pressiona um botão de interação; não é permitido subir escadas interativas.

A abordagem "Quase todo mundo" é a que você mencionou: trate as escadas como se realmente fossem uma rampa. Dependendo do tipo de jogo, convém colocar a rampa em alturas diferentes em relação às escadas. Normalmente, em um jogo 2D, o truque "as escadas são na verdade uma rampa" é menos perceptível para o jogador se a rampa estiver nivelada com os cantos inferiores de cada degrau da escada, enquanto que em um jogo 3D normalmente é menos perceptível se a rampa estiver nivelada com os cantos superiores de cada etapa. (como em um jogo em 2D, é mais fácil perceber se os pés de um personagem estão flutuando acima do solo, e você deseja minimizá-lo, enquanto em um jogo em 3D é mais fácil perceber se os pés de um personagem estão atravessando o chão e você quer minimizar isso).

Trevor Powell
fonte
Excelente observação sobre float / clipping em diferentes pontos de vista gráficos.
Kroltan
Sua informação está um pouco errada. Somente nos jogos antigos do mario você tem que pular para subir escadas. Mas acho que isso é óbvio. Mas o mal residente definitivamente também tinha escadas que podem ser escaladas interativamente!
Tara
4

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.

Jwosty
fonte
Seria bom se você pudesse explicar como detectar esses obstáculos.
Tara
0

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/

PixelCake Games
fonte