Dans un jeu de plateforme basé sur la physique 2D qui contient des échelles, comment déterminez-vous si le joueur qui monte est provoqué par un saut ou s'il monte une échelle, de sorte que vous sachiez quelle animation jouer?
Et en général, évidemment, le vecteur de direction n'est pas suffisant pour déterminer l'animation à jouer: comment déterminez-vous également la cause du mouvement (afin que vous connaissiez le sprite correct à utiliser)?
physics
sprites
movement
platformer
Paul Manta
la source
la source
Réponses:
J'ai régulièrement un problème de logique personnelle que vous semblez exprimer ici. C'est que parfois vous regardez la logique et la programmation dans la mauvaise direction. Dans ce cas, vous semblez ne pas réaliser que depuis le début vous savez ce qui se passe, à cause du code logique. Vous devriez déjà savoir, par programme, s'il est sur l'échelle ou non.
Pensez-y (comme je l'ai dit, j'ai souvent ce problème). La logique des jeux devrait savoir que vous êtes sur l'échelle, en supposant que vous soyez un programmeur intelligent. Pour une meilleure explication, j'ai un type d'archive de fichier, et j'ai perdu environ une heure par jour à essayer de comprendre comment obtenir la taille des données et je ne me suis jamais arrêté de penser que, lorsque je charge le fichier, je connaître sa taille: P.
La raison pour laquelle cela concerne si exclusivement, c'est que vous le regardez comme "Maintenant que je suis dans les airs, comment puis-je savoir si je suis sur une échelle ou si je saute?" ... Quand vous devriez vraiment pense "Je suis sur le point de prendre l'air, mais par quelle méthode en PREMIER, afin de pouvoir l'utiliser pour les animations."
la source
OnJump()
changez votrejumping
booléen en vrai, puis si vous êtes dans les airs et quejumping
c'est faux, alors vous tombez ou sur une échelle, etc.Le système physique ne sait ni ne se soucie pourquoi le joueur se déplace dans une direction particulière. C'est votre jeu qui a poussé le système physique à déplacer le joueur de cette façon, et il est donc de votre responsabilité de garder une trace de cela. L'entité du joueur devrait avoir un état qui lui dira si elle saute, grimpe, court, etc. Vous ne devriez pas essayer de comprendre cela en fonction de ce qui s'est passé avec le système physique.
la source
Il semble que tout événement déclenché lors de la collision qui définit la vitesse verticale du joueur puisse également être utilisé pour définir un indicateur spécifiant quelle animation utiliser.
Si vous utilisez une bibliothèque tierce trop restrictive avec les informations qu'elle vous donne, il serait possible d'entourer l'échelle d'un rectangle et si le joueur se déplaçant vers le haut et contenu dans ce rectangle, alors faites l'animation d'escalade.
la source
Lors du réglage de la vitesse de saut, définissez également l'état des caractères sur STATE_JUMPING. En faisant cela, vous savez toujours dans quel état se trouve le joueur et pouvez agir en conséquence en vérifiant l'état du joueur.
la source