+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Invité de passage
    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 : 1
    Points
    1

    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 :
    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
    772
    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 : 772
    Points : 1 638
    Points
    1 638

    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
    Invité de passage
    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 : 1
    Points
    1

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •