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:
Le problème est que dans la méthode Update, je veux modifier par exemple juste l'abscisse du vecteur de déplacement.
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); } }
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
Partager