Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C# monogame] Déplacement en diagonale

Anonyme
    20 octobre 2017 à 20:14:37

    Bonjour,
    Je souhaite que dans mon jeux le joueur puisse aller en diagonal le probleme c'est que pour les deplacement exemple en haut je fait this.position.X += speed; le probleme avec ça c'est que lorsque je veux faire une diagonal je fait 
    this.position.X += speed;
    this.position.Y += speed;
    Le problème avec ça c'est que ducoup le joueur vas plus vite en diagonale donc alors que je veux que quoi qu'il arrive il aille a la même vitesse. Je sais qu'il faut utiliser le cercle trigo mais j'y arrive pas
    Merci de votre aide
    • Partager sur Facebook
    • Partager sur Twitter
      23 octobre 2017 à 12:09:50

      Salut,

      On va utiliser des unités homogènes : on additionne des distances, pas une distance et une vitesse (si tu ne connais pas l'homogénéité des formules en physique, en gros on additionne des pommes avec des pommes, pas avec des oranges).

      Donc au lieu d'additionner speed à tes positions, on va additionner stepSize (qui représente la distance que fait ton personnage en 1 pas, peu importe la direction). Ainsi pour avancer dans la direction X le code que tu as donné devient :

      this.position.X += stepSize;

      Pareil pour la direction Y.

      Maintenant quand ton personnage va en diagonale (je suppose qu'il y a le même angle entre les axes X et Y et ta trajectoire vu ce que tu as donné comme code), la distance qu'il fait reste la même, stepSize, seulement il faut maintenant la décomposer suivant les axes X et Y. Le plus simple pour cela est d'utiliser un triangle rectangle :

      La distance que tu veux faire, en diagonale, est l'hypothénuse, sa longueur est donc égale à stepSize.

      Quelle est la longueur des deux autres côtés?

      Comme ton personnage va en diagonale (même hypothèse qu'avant) ces deux autres côtés ont la même longueur (exactement comme tu avais mis deux fois la même valeur dans le code que tu as donné). C'est cette longueur que tu dois déterminer (avec le théorème de pythagore) et utiliser.

      N'hésite pas à demander si tu n'as pas compris (je me suis peut être un peu trop étalé) ou si tu veux savoir comment faire en allant dans n'importe quelle direction (là il faudra effectivement passer par de la trigo).

      -
      Edité par Stormweaker 23 octobre 2017 à 12:12:26

      • Partager sur Facebook
      • Partager sur Twitter

      [C# monogame] Déplacement en diagonale

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown