Em um corredor sem fim em 2D, o que deve acontecer quando o jogador está correndo "muito rápido" por uma ladeira e pula?
Por exemplo, em um caso "normal":
.O.
. __..O_____
. /
. /
O/
_/
Se ele estiver se movendo para a direita devagar, ele pulará para cima e pousará na parte plana da superfície. No entanto, se ele estiver se movendo muito rápido, o salto não terá efeito, pois seu movimento para frente o trará de volta ao contato com a ladeira antes que ele possa ficar alto o suficiente para passar por ela. Quando a velocidade é suficientemente alta, não haverá efetivamente nenhum salto.
_________
/
.O/
O/
_/
Existem maneiras conhecidas de resolver esse problema? Eu sei que é fisicamente correto *, mas existem técnicas que outros jogos usam para superar isso de uma maneira razoável?
Como último recurso, terei que remover todas as inclinações inclinadas demais.
* Se você forçar o jogador a nunca pular para trás.
Respostas:
Aqui estão alguns exemplos de como os jogos (corredor ou não) lidaram com essa situação. Não existe o "melhor" e você ainda precisa decidir qual é o melhor para o seu jogo.
O caminho fisicamente "correto" (impulso vertical)
Para pular, você adiciona um impulso vertical (vermelho) à sua velocidade de movimento (verde) . A velocidade resultante (azul) sempre o levará acima da encosta, portanto, desde que sua encosta não fique muito mais íngreme em breve, seu personagem sempre pulará acima da encosta.
A ressalva é que, se seu personagem está subindo uma ladeira íngreme, agora você pode pular muito alto.
Saltos perpendiculares (Sonic)
Ao pular, seu impulso de pulo está em uma direção (vermelha) perpendicular à inclinação (verde) . Você pode se lembrar desse comportamento dos jogos do Sonic.
A ressalva é que, em encostas muito íngremes, você acaba pulando para trás.
Não pula nas encostas
Talvez você decida que as pistas são meio especiais e não faz sentido pular nelas. Por exemplo, escadas são um tipo especial de declive, que em alguns jogos você não consegue pular.
A ressalva é que, sempre que você tira o controle do jogador dessa maneira, você precisa comunicar claramente as expectativas, caso contrário, o jogador pode ficar frustrado. Por exemplo, Castlevania usa uma animação especial para "subir escadas" para deixar claro que é um tipo especial de movimento.
Não é possível correr em encostas íngremes
Outra opção é tornar impossível subir ladeiras muito íngremes - os jogadores deslizam para baixo como se fosse uma obstrução de parede. Como estão caindo ou escorregando, fica claro que eles também não podem pular durante esse período.
Sem declives íngremes
Você pode seguir o caminho mais fácil e remover completamente as encostas que lhe causam esses problemas. Não é uma idéia tão ruim quanto parece, porque subir ladeiras não é divertido; descer ladeiras é muito mais emocionante!
Sem pistas (a resposta Mu)
Quando se trata de jogabilidade, sou fã de design minimalista - como diz o ditado, "a perfeição finalmente é alcançada não quando não há mais nada a acrescentar, mas quando não há mais nada a ser levado". As pistas servem a um propósito útil de jogo ou apenas parecem boas - ou seja, são divertidas ? Afinal, é perfeitamente bom ter um corredor sem ter inclinação.
fonte
Para qualquer um que se deparar com isso, eu consegui contornar isso com um número mínimo de quadros que devem passar na animação de salto antes que a colisão com a colina seja registrada. Dessa forma, você tem um período de carência para permitir que o personagem se levante um pouco sem se preocupar com a colisão da encosta.
fonte
o raycast é uma boa ideia, você pode usar o ray juiz se é uma inclinação, e então pode controlar a velocidade alterando a velocidade do player.
fonte