Comment puis-je faire tenir un personnage sur des pentes?


8

Tout d'abord, notez que je veux comprendre le principe, donc je préférerais des explications en anglais simple (mais bien sûr, je n'ai rien contre un code pour compléter ces explications).

Je me demande quelle est la façon de faire marcher correctement un personnage sur une pente, commençons par deux captures d'écran du jeu Limbo pour vous montrer ce que je veux dire: Limbo personnage principal debout sur une pente Limbo personnage principal debout sur un terrain plat
Donc, comme vous pouvez le voir sur ces photos, cela ressemble à la colonne vertébrale du le personnage est en fait perpendiculaire à l'horizon et non à la surface du sol et cette observation m'amène à ma question:
comment reproduire un tel comportement avec Sprite Kit? Parce que si j'attache un corps physique à un nœud, j'ai la possibilité de le laisser tourner, donc j'obtiendrais quelque chose comme ceci: Nous pouvons voir que le sprite suit le sol sur lequel il se tient, donc les pieds du personnage sont au sol mais sa colonne vertébrale n'est pas perpendiculaire à l'horizon mais plus au sol

Si je désactive la rotation, j'obtiendrais quelque chose comme ceci: Ici, la colonne vertébrale est perpendiculaire à l'horizon mais les pieds du personnage ne touchent pas le sol.  En fait, il n'y a qu'un coin du sprite qui touche le sol
Comme vous pouvez le voir, ces façons de faire présentent des problèmes importants et ne semblent pas du tout naturelles. Alors, comment dois-je faire pour le rendre naturel? J'ai pensé à créer plusieurs sprites et plusieurs corps physiques, puis à les attacher tous ensemble avec des articulations, je ne pense pas que cela semblera naturel, car si vous regardez ceci: bien entrez la description de l'image ici
que je puisse physiquement lier ces nœuds, comment vais-je faire pour les faire regarder graphiquement réel? Parce que dans la réalité, par exemple, la cuisse et le mollet sont liés par un genou ...

Des idées ?


1
Essayez de vous tenir sur une pente et voyez comment cela se passe. Lorsque vous placez une jambe devant l'autre, la jambe plus haute doit se plier pour compenser la pente. Votre approche avec plusieurs articulations est donc une bonne option.
Eejin

@Eejin Ok merci et qu'en est-il du réalisme graphique au niveau des articulations? Que puis-je faire pour les lier naturellement? Pour ne pas donner l'impression qu'il y a plusieurs nœuds?
Trevör

Cela dépend de certains aspects de votre jeu. Bien sûr, les parties du corps bien dessinées aident. Pourriez-vous donner un peu plus d'informations sur les tailles et l'importance des détails parfaits?
Eejin

Si votre sol est toujours, disons, de l'herbe haute, l'utilisation du point bas du sprite peut être acceptable car les jambes des personnages seront obscurcies au point où vous ne pourrez pas dire comment elles se tenaient.
jzx

Je ne connais pas SpriteKit, mais beaucoup de jeux représentent le joueur comme une forme de "capsule" ou de "pilule" plutôt que comme un rectangle. De plus, l'objet physique est généralement plus petit que le sprite lui-même.
Thane Brimhall

Réponses:


6

Pour développer la réponse de Josh Petrie, trouver l'angle du pied est également assez simple.

entrez la description de l'image ici

L'angle des pieds est égal à l'angle de la surface inclinée. Étant donné que nous avons commodément deux points sur cette pente, nous pouvons trouver l'angle d'inclinaison (il est également possible d'utiliser deux coins de la forme triangulaire de la pente, mais les pentes progressives deviendraient trop compliquées; pour les collines, c'est la meilleure solution). En fin de compte, la pente sera H / P (en supposant que le talon de la jambe pliée est directement sous la hanche correspondante), ou arctan (H / P) rad. En utilisant des cosinus, on peut facilement trouver que H = (F + T) - (Fcosθ + Tcosφ).

L'angle du pied devient arctan ((F (1-cosθ) + T (1-cosφ)) / P)

PS: Si vous voulez vraiment entrer, vous pouvez également trouver la largeur ajoutée à P.

PSS: Le pied ne se pliera que trop haut, alors gardez cela à l'esprit avant d'essayer de gravir une pente de 80 degrés.

PSSS: Les gens ne gravissent pas les collines sur leurs talons, mais ils se reposent sur eux. Garder le pied parfaitement à plat sur la colline pourrait dépeindre de façon assez précise le joueur debout sur la pointe des pieds et permettre au talon de s'enfoncer au sol pendant la marche au ralenti pourrait permettre un mouvement très réaliste.


5

Il existe des solutions et des astuces simples que vous pouvez utiliser (par exemple, si vos pentes auront toutes un angle fixe, créez simplement des sprites supplémentaires pour les mouvements en pente et au ralenti, fournissez un mécanisme pour que votre code de jeu sache si vous êtes sur une surface en pente, et rendre en conséquence - c'est généralement ce que faisaient les anciens jeux basés sur les sprites).

Une solution générale, développant votre idée de sprite multi-articulé, consiste à utiliser la cinématique inverse pour résoudre le placement des pieds d'un personnage ( voir également ).

Cela implique de définir une structure squelettique logique pour vos personnages, représentée visuellement par plusieurs sprites distincts (pour le torse, autant de parties de jambes que nécessaire et de pied). L'effecteur terminal de ce système est la position du pied du personnage sur la pente, qui peut être calculée à partir de la position du torse (fixe) et une idée du pied devant, sur la base du cadre de cycle de marche actuel. Entre ces deux positions connues, un système CI peut résoudre les paramètres des articulations des jambes et créer une approximation raisonnable de la façon dont tout bipède réel pourrait se stabiliser sur une surface en pente.

Le CI est souvent exprimé comme un problème 3D, mais il peut être réduit à l'espace 2D relativement facilement. En 2D, vous n'avez pas besoin de jouer avec presque autant de contraintes de rotation des articulations pour créer un mouvement réaliste que vous le feriez en 3D, ce qui est bien.

C'est la méthode utilisée par de nombreux jeux 2D modernes, en particulier compte tenu de la tendance des compositions de sprites basées sur le squelette pour les personnages, plutôt que de l'ancienne technique de création à la main de chaque image.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.