Como lidar com pular uma ladeira em um jogo de corredor?

8

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.

you786
fonte
Parece que a transição de terreno plano para morro íngreme atrasaria o jogador o suficiente para dar o salto. Se eles quiserem manter a velocidade, pularão antes da encosta. Apenas para sua informação, acho que sua pergunta é do tipo "ajude-me a decidir", tornando-a um tipo de opinião.
MichaelHouse
@ Byte56 Talvez alguma opinião possa entrar no mix, mas acho que essa ainda é uma boa pergunta. Alguns dos melhores perguntas sobre este local tem um ar de opinião sobre eles. Uma boa resposta pode indicar soluções enviadas.
Kevintodisco
@ktodisco Concordo, as respostas podem transformar uma questão limítrofe em uma ótima. (Embora o último dos seus exemplos esteja fechado, com razão).
MichaelHouse
Uma possibilidade que eu acho que já vi (sei que isso não é particularmente convincente) pode ser fazer a direção de um salto em relação ao ângulo do solo abaixo de você - então pular em uma ladeira descendente ganharia algum impulso para a frente, mas não saltar tão alto, ao saltar sobre uma inclinação ascendente iria enviar-lhe maior com reduzida impulso para a frente (acho que o salto como empurrar fora do chão)
Assistente de Tin
@ Amadeus9 esse é um bom argumento, mas acho que nesse caso específico eu não aplicaria. Reduzir a velocidade ao pular ainda acabará criando uma colisão de declive, uma vez que a velocidade aumenta sem limite.
you786

Respostas:

11

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.

pequenas asas

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.

sônica

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.

castlevania 3

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!

safari de esqui

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.

canabalt

congusbongus
fonte
Obrigado pela resposta detalhada. Para constar, acabei removendo todas as encostas que são muito íngremes.
usar o seguinte comando
1

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.

Daniel Keele
fonte
-1

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.

FengYi Ya
fonte
Você pode melhorar significativamente essa resposta explicando como .