Como detecto bordas?

18

No meu jogo, eu gostaria que meu personagem fosse capaz de agarrar-se às bordas e de se levantar se houvesse espaço para isso.

Como eu detecto se há uma borda e se o personagem tem espaço suficiente para subir?

doppelgreener
fonte
Esta pergunta foi criada como uma versão canônica de duas perguntas anteriores. Veja a meta discussão aqui .
Doppelgreener 20/10/12
11
Além disso, vinculando as perguntas abordadas na meta: gamedev.stackexchange.com/questions/38066/… e gamedev.stackexchange.com/questions/15491/…
MichaelHouse

Respostas:

22

O vídeo do Overgrowth Alpha 132 mostra como eles implementaram a escalada de borda.

O método deles deve funcionar em qualquer mecanismo, mesmo em 2D, em que você usaria um retângulo e um círculo em vez de um cilindro e uma esfera.

Sua detecção de borda envolve duas partes:

Detecção de parede (usando a esfera)

O jogo verifica se o jogador está colidindo com uma parede. Se houver uma parede, pode haver bordas nas quais o jogador possa agarrar. A segunda parte assume a análise das bordas.

Detecção de borda (usando o cilindro)

Se o jogador está em contato com uma parede, um cilindro é arrastado para baixo a uma certa distância acima da posição do jogador até tocar em uma borda. Isso determina três coisas:

  • Se existe uma borda acima do player
  • A altura da borda
  • Se há espaço para o jogador subir na borda, considerando que o cilindro ocupa o mesmo espaço horizontal que o jogador.
doppelgreener
fonte
Método incrível e exemplo fantástico +1
Bugster 20/10/12
"um cilindro é arrastado para baixo a uma certa distância acima da posição do jogador" Que distância? Isso é muito importante ao lidar com ambientes internos (você cruzaria o teto por acidente).
Tara
11
@Dudeson no passado, usei um raycast para encontrar inicialmente a superfície da borda, antes de acompanhar com uma verificação de volume para verificar se há espaço desobstruído suficiente para subir. Como o raycast é direcional, ele não lê tetos como falsos positivos - embora ainda possa ser preso no próximo andar se a origem for muito alta. As métricas exatas dependerão de muitos detalhes de cada jogo - o tamanho dos caracteres, alcance braço, desembaraço no nível de design, queda velocidades, etc.
DMGregory
@DMGregory Boa ideia com o elenco de raios!
Tara