IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[MonoGame] Déplacement en diagonal


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 82
    Points : 56
    Points
    56
    Par défaut [MonoGame] Déplacement en diagonal
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    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

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 648
    Points : 2 170
    Points
    2 170
    Par défaut
    Bonjour,

    Je ne connais pas ton jeu ni les déplacements donc dur de t'orienter mais une solution serait d'appliquer que 50% de la vitesse si il y a déplacement sur X ET sur Y, tout simplement. (Ou un autre facteur, si tu sens que c'est trop lent a ton gout, du genre 75% de la vitesse)

    Tu parles du cercle de trigo, mais tu n'en a pas forcément besoin si ton joueur se déplace uniquement sur 2 axes, c'est plus pour des problèmes de trajectoire.

    Si jamais tu en as besoin, voici une méthode très simple d'avoir une trajectoire selon un angle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            static public Vector2 GetTrajectory(float angle, float speed)
            {
                Vector2 trajectory = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
     
                return trajectory * speed;
            }
    Par contre pour la trigonométrie, je te conseille de t'y mettre si jamais le développement de jeux vidéo est plus qu'une simple passion passagère, car tu vas en bouffer moulte et moulte.

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 82
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Mon jeux est un shooter 2D vus de dessus
    Nom : s.gif
Affichages : 399
Taille : 93,5 Ko

    le problème avec la manière donner plus haut c'est que ça ralenti mon player
    Images attachées Images attachées  

  4. #4
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    En effet, il faut utiliser la trigonométrie.
    Pour un rayon de 1 et un angle de 45°, X=Y=0.7 approximativement.

    Donc, pour la diagonale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    this.position.X += 0.7 * speed;
    this.position.Y += 0.7 * speed;

Discussions similaires

  1. Déplacement diagonal
    Par Kerast dans le forum SDL
    Réponses: 3
    Dernier message: 26/01/2013, 17h51
  2. Déplacement ou positionnement d'une fenêtre
    Par agl dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/11/2003, 09h29
  3. Déplacement d'Objets
    Par NaDiA_SoFt dans le forum C++Builder
    Réponses: 6
    Dernier message: 20/09/2003, 14h28
  4. Déplacement "automatique" du curseur
    Par Amenofis dans le forum Composants VCL
    Réponses: 2
    Dernier message: 08/01/2003, 18h57
  5. Limiter le déplacement de la souris
    Par el_bouleto dans le forum C++Builder
    Réponses: 4
    Dernier message: 08/11/2002, 23h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo