Como lidar adequadamente com a parte de pouso em uma animação de salto

16

Olhe para esta folha de sprite.

Megaman

É claro que o quadro 1-3 é o quadro de "salto para cima", após o qual o último quadro será fixado até o "pico" do salto (quando a gravidade começar a recuar). Ao recuar, o quadro 4-7 é usado e tudo termina com um quadro "inativo" (que não é mostrado aqui neste sprite de salto).

Minha pergunta é sobre os quadros 6 e 7 neste sprite. Quando a entidade "aterrissa" após um salto, é suposto executar a animação 6-7 como a animação "aterrissagem". Ao descer para baixo em um quadro de salto 4-5, é fácil porque é o "início" da animação. O quadro 5 pode ser mantido enquanto você cair ... mas qual é a maneira apropriada de passar do quadro 5 para o 6-7-x? Você verifica se o quadro após o próximo é uma queda e depois "inicia" o pouso ou o faz quando realmente atinge o chão?

Não pode ser cronometrado por causa de vários cenários, como pular de um penhasco ou pular sob um teto baixo, atingindo sua cabeça e fazendo com que você volte para baixo.

Alguma ideia?

sPirc
fonte

Respostas:

17

Acho que a abordagem usual é ter três estados relacionados ao salto : pular (um herói se eleva ao ponto mais alto do salto), Queda (do ponto mais alto do salto ao chão), Pouso (salto termina com o herói parado no chão) )

Existem várias maneiras de detectar esses estados, geralmente são várias verificações de colisão configurando sinalizadores de estado. Por exemplo, na etapa de física de um personagem, podemos verificar colisões abaixo e, se não houver, o personagem está no ar. Agora, se um personagem tem velocidade vertical positiva, é um estado de Salto , caso contrário, é um estado de Queda . Se for um estado de queda e detectamos uma colisão abaixo, então é um estado de pouso , então vamos mudar para a animação de pouso.

Essa animação geralmente é exibida quando o herói realmente atinge o chão. A sequência de animação é curta, portanto o pouso parecerá em alta velocidade, além de criar uma sensação de controles precisos e nítidos. Às vezes, o personagem pode fazer uma longa sequência de aterrissagem, mas é possível cancelar uma animação de aterrissagem e começar a correr, por exemplo, Castlevania: SotN.

EnoughTea
fonte
+1. Bom argumento sobre os estados. Nos estados, você pode descobrir outros detalhes / modos.
Kromster diz apoio Monica
5

Eu já vi isso feito de duas maneiras:

  1. Quando a caixa delimitadora colidir com o solo, faça uma transição rápida 5-> 6-> 7.
  2. Tenha uma segunda caixa delimitadora 'fantasma', que se estende uma pequena parte abaixo da caixa delimitadora real para iniciar o 5-> 6 e, em seguida, na caixa delimitadora real que colide, faça 6-> 7.
Adrian Seeley
fonte
Gostei do 2º caso. Parece muito flexível, porque a caixa delimitadora de fantasmas pode ser ajustada para longe, dependendo da velocidade do personagem!
pek
Abordagem interessante Nbr 2. Nunca acabei tentando, mas vou lembrar disso, obrigado.
SPirc