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

XNA/Monogame Discussion :

Vector2: Modifier la valeur de ses coordonnées indépendemment.


Sujet :

XNA/Monogame

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Vector2: Modifier la valeur de ses coordonnées indépendemment.
    Bonjour,

    J'ai une classe MoveableSprite, qui a pour attributs sa vitesse(_speed), et son vecteur de déplacement(_velocity), normalisé à chaque appel de la méthode SetVelocity.

    J'ai ensuite créé une classe Character héritant de la classe MoveableSprite, dont voici le code source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    class Character : MoveableSprite
        {
            public Character(TextureManager textureManager)
                : base(textureManager, "NPC")
            {
                _position = new Vector2(64, 0);
                _speed = 0.1f;
            }
     
            public void Update(float elapsedTime, Level level, Screen screen, KeyboardState keyboardState, MouseState mouseState, Vector2 winSize)
            {
                //move with Q-D, jump with Space
     
                if (keyboardState.IsKeyDown(Keys.Q))
                {
                    //increase the X velocity
                }
                if (keyboardState.IsKeyDown(Keys.D))
                {
                    //decrease the X velocity
                }
                if (keyboardState.IsKeyDown(Keys.Space))
                {
                    //decrease the Y velocity
                }
     
                //gravity
                //increase the Y velocity
     
     
     
                //update position and rotation
                base.Update(elapsedTime, level);
            }
        }
    Le problème est que dans la méthode Update, je veux modifier par exemple juste l'abscisse du vecteur de déplacement.
    Or, ce vecteur est normalisé, et changer son abscisse ne changera pas la vitesse du personnage...

    Je voudrais savoir comment faire pour la vitesse en Y ne soit pas affectée par un changement en X, donc comment changer la vitesse en fonction de cette modification.

    J'ai essayé de dénormaliser le vecteur, d'effectuer le changement, puis de le renormaliser, mais ça ne fonctionne toujours pas...


    Merci pour votre aide

  2. #2
    Membre expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Février 2006
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 1 031
    Points : 3 092
    Points
    3 092
    Par défaut
    Tu ne normalises pas, tu supprimes ta variable speed et tout seras simple et efficace.
    Suivez le développement de Chibis Bomba
    twitter : https://twitter.com/MoD_DiB
    DevBlog : http://moddib.blogspot.fr/

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    J'avais enlevé la normalisation pour tester et ça fonctionnait mieux, mais on m'a dit que la normalisation facilitait les calculs, donc j'ai essayé de faire avec...

    Merci de ta réponse, je vais faire comme ça

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/12/2012, 18h42
  2. [XSL] Comment modifier la valeur d'une variable?
    Par sorcer1 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 17/02/2010, 14h26
  3. Réponses: 3
    Dernier message: 04/01/2006, 21h53
  4. Modifier la valeur d'un champ en fonction d'une autre...
    Par venividivici dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/08/2005, 15h28
  5. [C#] Modifier une valeur dans une DataTable
    Par Scorff dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/05/2005, 11h45

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