Comment gérer le saut d'une pente dans un jeu de coureur?

8

Dans un coureur sans fin 2D, que doit-il se passer lorsque le joueur court "trop ​​vite" sur une pente et saute?

Par exemple, dans un cas "normal":

    .O.
   . __..O_____
  . /
 . /
 O/
_/

S'il se déplace vers la droite assez lentement, il sautera vers le haut et atterrira sur la partie plate de la surface. Cependant, s'il se déplace trop vite, le saut n'aura aucun effet car son mouvement vers l'avant le ramènera en contact avec la pente avant qu'il ne puisse monter suffisamment haut pour la franchir. Lorsque la vitesse est suffisamment élevée, il n'y aura effectivement pas de saut.

     _________
    /
 .O/
 O/
_/

Existe-t-il des moyens connus pour résoudre ce problème? Je sais que c'est physiquement correct *, mais y a-t-il des techniques que d'autres jeux utilisent pour surmonter cela de manière raisonnable?

En dernier recours, je devrai retirer toutes les pentes trop inclinées.

* Si vous contraignez le joueur à ne jamais sauter en arrière.

you786
la source
Il semble que la transition d'un terrain plat à une pente raide ralentirait suffisamment le joueur pour faire le saut. S'ils veulent maintenir leur vitesse, ils sautent avant la pente. Juste pour info, je pense que votre question est une sorte de question de type "aidez-moi à décider", ce qui en fait une sorte d'opinion basée.
MichaelHouse
@ Byte56 Peut-être que certains avis peuvent entrer dans le mélange, mais je pense que c'est toujours une bonne question. Certaines des meilleures questions sur ce site ont un air d'opinion à leur sujet. Une bonne réponse pourrait indiquer des solutions livrées.
kevintodisco
@ktodisco Je suis d'accord, les réponses peuvent transformer une question limite en une excellente. (Bien que le dernier de vos exemples soit clos, à juste titre).
MichaelHouse
Une possibilité, que je pense avoir vue (je sais que ce n'est pas particulièrement convaincant) pourrait être de faire la direction d'un saut par rapport à l'angle du sol sous vous - donc sauter sur une pente descendante vous donnerait un certain élan vers l'avant, mais pas sauter aussi haut, tandis que sauter sur une pente ascendante vous enverrait plus haut avec un élan vers l'avant réduit (pensez au saut comme poussant du sol)
Tin Wizard
@ Amadeus9 c'est un bon point, mais je pense que dans ce cas précis, je ne postulerais pas. Réduire la vitesse en sautant finira toujours par créer une collision de pente, car la vitesse augmente sans limite.
you786

Réponses:

11

Voici quelques exemples de la façon dont les jeux (coureurs ou autres) ont géré cette situation. Il n'y a pas de "meilleur" et vous devez toujours décider lequel convient à votre jeu.

La voie physiquement "correcte" (impulsion verticale)

Pour sauter, vous ajoutez une impulsion verticale (rouge) à votre vitesse de déplacement (vert) . La vitesse résultante (bleue) vous emmènera toujours au-dessus de la pente, donc tant que votre pente ne deviendra pas trop raide bientôt, votre personnage sautera toujours au-dessus de la pente.

petites ailes

La mise en garde est que si votre personnage monte sur une pente raide, vous pouvez maintenant sauter très haut.

Sauts perpendiculaires (Sonic)

En sautant, votre impulsion de saut est dans une direction (rouge) perpendiculaire à la pente (verte) . Vous vous souvenez peut-être de ce comportement des jeux Sonic.

Sonique

La mise en garde est que sur les pentes très raides, vous finissez souvent par sauter en arrière.

Pas de saut sur les pentes

Peut-être que vous décidez que les pentes sont un peu spéciales et que cela n'a pas de sens de sauter dessus. Par exemple, les escaliers sont un type spécial de pente sur laquelle vous ne pouvez pas sauter du tout dans certains jeux.

castlevania 3

La mise en garde est que, chaque fois que vous enlevez le contrôle au joueur comme celui-ci, vous devez clairement communiquer les attentes, sinon le joueur peut être frustré. Par exemple, Castlevania utilise une animation spéciale "montée d'escalier" pour indiquer clairement qu'il s'agit d'un type de mouvement spécial.

Pas de course sur des pentes raides

Une autre option consiste à rendre impossible l'ascension de pentes trop raides - les joueurs glissent vers le bas comme s'il s'agissait d'une obstruction semblable à un mur. Puisqu'ils tombent ou glissent, il est clair qu'ils ne peuvent pas non plus sauter pendant ce temps.

Aucune pente raide (ascendante)

Vous pouvez emprunter la voie facile et supprimer entièrement les pentes qui vous poseront de tels problèmes. Ce n'est pas une si mauvaise idée qu'il y paraît, car monter des pentes n'est pas amusant; descendre des pentes est bien plus excitant!

safari à ski

Pas de pentes (la réponse Mu)

En ce qui concerne le gameplay, je suis un fan du design minimaliste - comme le dit le dicton, "la perfection n'est finalement atteinte que lorsqu'il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retirer". Les pistes ont-elles un objectif de gameplay utile ou ont-elles simplement l'air bien - c'est-à-dire qu'elles sont amusantes ? Après tout, c'est parfaitement bien d'avoir un coureur sans aucune pente.

canabalt

congusbongus
la source
Merci pour la réponse détaillée. Pour mémoire, j'ai fini par enlever toutes les pentes trop raides.
you786
1

Pour tous ceux qui rencontrent cela, je l'ai contourné en ayant un nombre minimum d'images qui doivent passer dans l'animation de saut avant que la collision avec la colline ne soit enregistrée. De cette façon, vous avez un délai de grâce pour permettre au personnage de se lever un peu sans se soucier de la collision de la pente.

Daniel Keele
la source
-1

le raycast est une bonne idée, vous pouvez utiliser ray jud pour savoir s'il s'agit d'une pente, puis vous pouvez contrôler la vitesse en modifiant la vitesse du lecteur.

FengYi Ya
la source
Vous pourriez considérablement améliorer cette réponse en expliquant comment .