Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Moteurs de jeux vidéo > XNA
XNA Forum d'entraide sur le développement avec XNA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/08/2012, 13h02   #1
Xaychru04
Invité de passage
 
Homme
Inscription : 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
Xaychru04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 15h55   #2
MoDDiB
Membre chevronné
 
Homme
Développeur de jeux vidéo
Inscription : février 2006
Messages : 471
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 : 471
Points : 738
Points : 738
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/
MoDDiB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/08/2012, 21h46   #3
Xaychru04
Invité de passage
 
Homme
Inscription : 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
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
Xaychru04 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h04.


 
 
 
 
Partenaires

Hébergement Web