¿Cómo manejar saltar por una pendiente en un juego de corredor?

8

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.

you786
fuente
Parece que la transición de terreno plano a colina empinada ralentizaría al jugador lo suficiente como para hacer el salto. Si quieren mantener su velocidad, saltarían antes de la pendiente. Solo para su información, creo que su pregunta es una especie de pregunta de "ayudarme a decidir", por lo que está basada en opiniones.
MichaelHouse
@ Byte56 Quizás alguna opinión pueda entrar en la mezcla, pero creo que esta sigue siendo una buena pregunta. Algunas de las mejores preguntas en este sitio tienen un aire de opinión sobre ellas. Una buena respuesta podría señalar soluciones enviadas.
kevintodisco
@ktodisco Estoy de acuerdo, las respuestas pueden convertir una pregunta límite en una excelente. (Aunque el último de sus ejemplos está cerrado, con razón).
MichaelHouse
Una posibilidad, que creo que he visto (sé que no es particularmente convincente) podría ser hacer la dirección de un salto en relación con el ángulo del suelo debajo de usted, por lo que saltar en una pendiente descendente le daría un poco de impulso hacia adelante, pero no saltar tan alto, mientras que saltar en una pendiente ascendente lo enviaría más alto con menor impulso hacia adelante (piense en el salto como empujar desde el suelo)
Tin Wizard
@ Amadeus9 es un buen punto, pero creo que en este caso específico no lo solicitaría. La reducción de la velocidad al saltar todavía terminará creando una colisión en pendiente, ya que la velocidad aumenta sin límite.
you786

Respuestas:

11

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.

alas pequeñas

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.

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.

Castlevania 3

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!

safari de esquí

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.

canabalt

congusbongus
fuente
Gracias por la respuesta detallada. Para el registro, terminé eliminando todas las pendientes que son demasiado empinadas.
you786
1

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.

Daniel Keele
fuente
-1

El Raycast es una buena idea, puede usar Ray Jud si es una pendiente, luego puede controlar la velocidad cambiando la velocidad del jugador.

FengYi Ya
fuente
Podría mejorar significativamente esta respuesta explicando cómo .