J'ai un jeu de plateforme 2D, où le joueur court toujours vers la droite, mais le terrain n'est pas toujours horizontal. 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?
la source
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.
la source
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/
la source