Em um jogo de plataformas 2D baseado em física que contém escadas, como você determina se o jogador subindo é causado por um salto ou se ele sobe uma escada, de modo que você saiba qual animação jogar?
E, em geral, obviamente o vetor de direção não é suficiente para determinar a animação a ser reproduzida: como você também determina a causa do movimento (para saber o sprite correto a ser usado)?
physics
sprites
movement
platformer
Paul Manta
fonte
fonte
Respostas:
Eu tenho um problema de lógica pessoal regularmente que você parece expressar aqui. Às vezes, você está olhando a lógica e a programação da direção errada. Nesse caso, você parece não perceber que, desde o início, sabe o que está acontecendo, por causa do código lógico. Você já deve saber, programaticamente falando, se ele está na escada ou não.
Pense nisso (como eu disse, muitas vezes tenho esse problema). A lógica dos jogos deve saber que você está na escada, supondo que você esteja sendo um programador inteligente. Para uma explicação melhor, eu tenho um tipo de arquivo morto e desperdicei cerca de uma hora do dia tentando descobrir como obter o tamanho dos dados e nunca parei para pensar que, quando carrego o arquivo, agora conheça seu tamanho: P.
A razão pela qual isso se relaciona tão exclusivamente é que você está vendo como "Agora que estou no ar, como posso descobrir se estou em uma escada ou pulando?" ... Quando você realmente deveria pense "Estou prestes a entrar no ar, mas com qual método PRIMEIRO, para que eu possa usá-lo para o uso das animações".
fonte
OnJump()
mudar a suajumping
booleano como true e, em seguida, se você está no ar ejumping
é falsa, então ou você está caindo ou em uma escada, etc.O sistema de física não sabe nem se importa por que o jogador está se movendo em uma direção específica. É o seu jogo que fez com que o sistema de física movesse o jogador dessa maneira e, portanto, é responsabilidade do seu jogo acompanhar isso. A entidade do jogador deve ter algum estado que diga se está pulando, subindo, correndo, etc. Você não deve tentar descobrir isso com base no que aconteceu com o sistema de física.
fonte
Parece que qualquer evento que seja acionado na colisão que define a velocidade vertical dos jogadores também pode ser usado para definir um sinalizador especificando qual animação usar.
Se você estiver usando uma biblioteca de terceiros que seja muito restritiva com as informações fornecidas, será possível cercar a escada com um retângulo e, se o jogador estiver subindo e contido nesse retângulo, faça a animação de escalada.
fonte
Ao definir a velocidade do salto, defina também o estado dos caracteres para STATE_JUMPING. Fazendo isso, você sempre sabe em que estado o jogador está e pode agir em conformidade, verificando o estado do jogador.
fonte