Faites courir le joueur dans les escaliers en douceur

11

J'ai un jeu de plateforme 2D, où le joueur court toujours vers la droite, mais le terrain n'est pas toujours horizontal. Exemple:

Un exemple

J'ai implémenté un système de collision de boîte englobante qui vérifie simplement les intersections avec la boîte du joueur et les autres blocs, pour empêcher le joueur de courir si vous rencontrez un gros bloc, de sorte que vous devez sauter, mais quand je monte des escaliers, je veux qu'il courir en douceur comme il est sur le sol horizontal. Avec le système de collision, vous devez sauter les escaliers pour les dépasser!

J'ai pensé à générer une ligne entre les bords des escaliers et à imposer le mouvement du joueur sur cette ligne ... Que pensez-vous? Y a-t-il quelque chose de plus intelligent à faire?

Comme ici

Francesco Bonizzi
la source

Réponses:

11

Si vous êtes en mesure de faire pivoter les boîtes englobantes, j'aurais placé une boîte pivotée à 45 degrés aux pieds du joueur et je la combinerais avec une boîte non pivotée pour représenter le reste du corps. Cela pourrait faire glisser automatiquement le lecteur sur tout ce qui est assez petit.

Cependant, cela provoquerait probablement une coupure avec le modèle du joueur et les escaliers.

Une autre idée est de mettre une boîte englobante de la tête du personnage pour la tailler avec une largeur plus élevée que la boîte du personnage.

Lorsque le joueur entre en collision avec quelque chose que la case «A» ne fait pas, vous pouvez déplacer le joueur sur ce avec quoi il est entré en collision

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground
Kim
la source
12

Il existe trois approches générales pour gérer les escaliers dans les jeux vidéo:

L'approche "Mario" est que vous devez sauter pour monter les escaliers.

L'approche «Castlevania» est que monter / descendre des escaliers est un type de mouvement différent; vous devez appuyer sur «haut» sur le contrôleur, et une animation spéciale «montée d'escalier» est jouée pour traverser les escaliers. Une variante de ceci est l'approche "Resident Evil", où monter / descendre des escaliers est traité comme une cinématique complète qui se joue lorsque le joueur appuie sur un bouton d'interaction; aucune escalade interactive n'est autorisée.

L'approche "Presque tout le monde" est celle que vous avez mentionnée: traitez l'escalier comme s'il s'agissait en fait d'une rampe. Selon le type de jeu, vous pouvez placer la rampe à différentes hauteurs par rapport aux escaliers. Généralement, dans un jeu 2D, l'astuce "les escaliers sont en fait une rampe" est moins visible pour le joueur si la rampe est au niveau des coins inférieurs de chaque marche d'escalier, tandis que dans un jeu 3D, il est généralement moins visible si la rampe est au niveau avec les coins supérieurs de chaque marche. (comme dans un jeu en 2D, il est plus facile de remarquer si les pieds d'un personnage flottent au-dessus du sol, et donc vous voulez minimiser cela, alors que dans un jeu en 3D, il est plus facile de remarquer si les pieds d'un personnage passent à travers le sol, et donc vous vouloir minimiser cela).

Trevor Powell
la source
Grande remarque sur float / clipping sur différents points de vue graphiques.
Kroltan
Vos informations sont un peu fausses. Seulement dans les anciens jeux mario, vous devez sauter pour monter les escaliers. Mais je suppose que c'est évident. Mais le mal résidant avait certainement aussi des escaliers qui peuvent être montés de manière interactive!
Tara
4

La plupart des méthodes que j'ai rencontrées ont déjà été mentionnées ci-dessus - mais il y en a encore une qui n'a pas été mentionnée. Lorsque le joueur rencontre un obstacle vertical suffisamment court (disons 1/3 de sa hauteur), placez-le simplement sur le dessus. Minecraft et le moteur Source, par exemple, adoptent cette approche dans ce genre de situation. De plus, cette méthode vous permet d'utiliser toujours de l'AABB pur pour toute la physique tout en évitant au joueur de devoir constamment monter les escaliers.

Jwosty
la source
Ce serait bien si vous pouviez expliquer comment détecter de tels obstacles.
Tara
0

Je travaille actuellement sur une partie similaire d'un moteur, et la façon dont j'ai traité les escaliers / les pentes consiste à compter les pixels transparents dans ma texture de rampe et à compenser l'objet du joueur par la quantité trouvée.

Il est similaire à l'idée de la carte des hauteurs qui est détaillée dans cet article: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

J'imagine que c'est vraiment ce que vous cherchez à faire, et vous pouvez choisir de jouer une animation différente qui joue en fonction de l'ascension des escaliers.

Il y a également un bon aperçu des différents concepts de pente dans cet article: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

Jeux PixelCake
la source