En un corredor sin fin en 2D, ¿qué debería suceder cuando el jugador está corriendo "demasiado rápido" cuesta arriba y salta?
Por ejemplo, en un caso "normal":
.O.
. __..O_____
. /
. /
O/
_/
Si se mueve hacia la derecha lo suficientemente lento, saltará hacia arriba y aterrizará en la parte plana de la superficie. Sin embargo, si se está moviendo demasiado rápido, el salto no tendrá efecto ya que su movimiento hacia adelante lo pondrá de nuevo en contacto con la pendiente antes de que pueda llegar lo suficientemente alto como para pasarla. Cuando la velocidad es suficientemente alta, efectivamente no habrá salto.
_________
/
.O/
O/
_/
¿Hay alguna forma conocida de resolver este problema? Sé que es físicamente correcto *, pero ¿existen técnicas que otros juegos usan para superar esto de manera razonable?
Como último recurso, tendré que eliminar todas las pendientes demasiado inclinadas.
* Si restringe al jugador para que nunca salte hacia atrás.
Respuestas:
Aquí hay algunos ejemplos de cómo los juegos (corredores o no) han manejado esta situación. No hay un "mejor" y todavía tienes que decidir cuál es el adecuado para tu juego.
La forma físicamente "correcta" (impulso vertical)
Para saltar, agregas un impulso vertical (rojo) a tu velocidad de movimiento (verde) . La velocidad resultante (azul) siempre lo llevará por encima de la pendiente, por lo que siempre que su pendiente no se vuelva demasiado empinada pronto, su personaje siempre saltará por encima de la pendiente.
La advertencia es que si tu personaje está subiendo una cuesta empinada, ahora puedes saltar muy alto.
Saltos perpendiculares (Sonic)
Al saltar, su impulso de salto está en una dirección (rojo) perpendicular a la pendiente (verde) . Puede recordar este comportamiento de los juegos de Sonic.
La advertencia es que en pendientes muy empinadas, a menudo terminas saltando hacia atrás.
No saltar en pendientes
Tal vez decidas que las pendientes son algo especiales y que no tiene sentido saltar sobre ellas. Por ejemplo, las escaleras son un tipo especial de pendiente, que en algunos juegos no puedes saltar en absoluto.
La advertencia es que, cada vez que le quitas el control al jugador de esta manera, debes comunicar claramente las expectativas, de lo contrario el jugador puede frustrarse. Por ejemplo, Castlevania usa una animación especial de "subir escaleras" para dejar en claro que es un tipo especial de movimiento.
No correr en pendientes pronunciadas
Otra opción es hacer que sea imposible subir pendientes demasiado empinadas: los jugadores se deslizan hacia abajo como si fuera una obstrucción parecida a una pared. Como están cayendo o deslizándose hacia abajo, está claro que tampoco pueden saltar durante este tiempo.
Sin pendientes pronunciadas
Puede tomar la salida fácil y eliminar por completo las pendientes que le causarán tales problemas. Esta no es una idea tan mala como parece, porque caminar cuesta arriba no es divertido; caminar por las laderas es mucho más emocionante!
Sin pendientes (la respuesta Mu)
Cuando se trata de jugabilidad, soy un fanático del diseño minimalista: como dice el refrán, "la perfección finalmente no se logra cuando ya no hay nada que agregar, sino cuando ya no hay nada que quitar". ¿Las pendientes tienen un propósito útil de juego, o simplemente se ven bien, es decir, son divertidas ? Después de todo, está perfectamente bien tener un corredor sin pendientes.
fuente
Para cualquier otra persona que se encuentre con esto, lo solucioné al tener un número mínimo de fotogramas que deben pasar en la animación de salto antes de que se registre la colisión con la colina. De esa manera, tienes un período de gracia para permitir que el personaje se levante un poco sin preocuparte por la colisión de la pendiente.
fuente
El Raycast es una buena idea, puede usar Ray Jud si es una pendiente, luego puede controlar la velocidad cambiando la velocidad del jugador.
fuente