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.
Réponses:
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.
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.
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.
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!
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.
la source
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.
la source
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.
la source