J'espère que nous avons tous joué Zelda: Un lien vers le passé, veuillez me corriger si je me trompe, mais je veux émuler ce type de mouvement de personnage 2D de haut en bas avec une touche de correction. Cela a été fait dans d'autres jeux, mais je pense que cette référence serait la plus facile à comprendre. Plus précisément, le type de mouvement et de correction dont je parle est:
- Le mouvement flottant n'est pas limité aux mouvements basés sur des tuiles comme Pokemon et d'autres jeux où un tapotement du pavé de mouvement vous déplace d'un carré dans cette direction cardinale. Ce mouvement flottant devrait pouvoir réaliser un mouvement diagonal.
- Si vous marchez vers l'ouest et que vous arrivez à un mur qui est diagonal de façon nord-est / sud-ouest, vous êtes corrigé dans un mouvement sud-ouest même si vous continuez à maintenir la gauche (ouest) sur le contrôleur. Cela devrait fonctionner pour les deux diagonales corrigeant dans les deux directions.
- Si vous êtes à quelques pixels de marcher carrément dans une porte ou un couloir, vous êtes corrigé à marcher dans le couloir ou dans le couloir, c'est-à-dire que vous cogner dans le coin vous pousse à entrer dans le hall / la porte.
J'ai cherché des moyens efficaces d'y parvenir et je n'ai pas eu de chance. Pour être clair, je parle du mouvement du personnage humain, pas du mouvement d'un PNJ. Leurs ressources sont-elles disponibles sur ce type de mouvement? Des équations ou des algorithmes expliqués sur un wiki ou quelque chose?
J'utilise XNA Framework, y a-t-il quelque chose pour y aider?
Une réponse possible pour le deuxième point est de projeter le vecteur de mouvement du joueur le long du vecteur de mur en utilisant un produit scalaire (ab * normalisé (b)). Vous obtenez alors un vecteur qui vous indique jusqu'où déplacer le joueur dans la direction du mur, et si vous déplacez le joueur par ce vecteur, vous obtenez une «diapositive» le long du mur. A bien fonctionné pour moi dans un projet de jeu précédent.
la source
Excellente réponse pour Josh, mais je vais ajouter quelques suggestions: - Pour plus d'informations sur le glissement contre les murs, consultez ma question - à partir de cette réponse, j'ai réussi à le faire fonctionner très bien. - Si je ne me trompe pas, lorsque vous montez sur l'écran, le lien facilitera l'alignement sur le carré de grille horizontal le plus proche. De cette façon, lorsque vous arrivez aux portes, vous êtes plus susceptible d'être correctement aligné (peut-être tort). - Pour faciliter le passage des portes, assurez-vous que la boîte de collision de votre personnage est bien plus petite que la largeur de la porte.
la source
Pour corriger l'entrée des portes, vous pouvez rendre l'objet de collision de la porte légèrement plus grand que l'image de la porte. Il en résulterait le même effet proposé par Josh, mais sans avoir à calculer la proximité du rectangle de collision du mur.
la source