En un juego de plataformas en 2D basado en la física que tiene escaleras, ¿cómo se determina si el jugador que sube es causado por un salto o si sube una escalera, de modo que sepa qué animación jugar?
Y, en general, obviamente, el vector de dirección no es suficiente para determinar la animación que se reproducirá: ¿cómo se determina también la causa del movimiento (para saber el sprite correcto para usar)?
physics
sprites
movement
platformer
Paul Manta
fuente
fuente
Respuestas:
Tengo un problema de lógica personal de forma regular que parece estar expresando aquí. Es que a veces estás mirando la lógica y la programación desde la dirección incorrecta por completo. En este caso, parece que no se está dando cuenta de que desde el principio sabe qué está sucediendo, debido al código lógico. Ya debería saber, programáticamente hablando, si está en la escalera o no.
Piénselo (como dije, a menudo tengo este problema). La lógica de los juegos debería saber que estás en la escalera, suponiendo que estás siendo un programador inteligente. Para una mejor explicación, tengo un tipo de archivo de archivos, y desperdicié aproximadamente una hora del día tratando de averiguar cómo obtener el tamaño de los datos y nunca me detuve a pensar que, cuando cargo el archivo, ahora saber su tamaño: P.
La razón por la cual esto se relaciona tan exclusivamente, es que lo estás viendo como "Ahora que estoy en el aire, ¿cómo puedo saber si estoy en una escalera o saltando?" ... Cuando realmente deberías piense "Estoy a punto de salir al aire, pero por qué método PRIMERO, para poder usarlo para las animaciones".
fuente
OnJump()
cambie su valorjumping
booleano a verdadero, y luego, si está en el aire yjumping
es falso, se está cayendo o está en una escalera, etc.El sistema de física no sabe ni le importa por qué el jugador se está moviendo en una dirección particular. Es su juego el que causó que el sistema de física moviera al jugador de esa manera, y por lo tanto, es responsabilidad de su juego hacer un seguimiento de eso. La entidad del jugador debería tener algún estado que diga si está saltando, trepando, corriendo, etc. No deberías tratar de resolver esto en función de lo que sucedió con el sistema de física.
fuente
Parece que cualquier evento que se desencadene en la colisión que establece la velocidad vertical de los jugadores también podría usarse para establecer una bandera que especifique qué animación usar.
Si está utilizando una biblioteca de terceros que es demasiado restrictiva con la información que le brinda, sería posible rodear la escalera con un rectángulo y si el jugador se mueve hacia arriba y está contenido en ese rectángulo, haga la animación de escalada.
fuente
Al establecer la velocidad de salto, también establezca el estado de los caracteres en STATE_JUMPING. Al hacer esto, siempre sabe en qué estado se encuentra el jugador y puede actuar en consecuencia al verificar el estado de los jugadores.
fuente