Développement XNA pour la XBox et le PC
278
Dans un premier temps, mettez à jour la position de la caméra en fonction des entrées
utilisateur : translations sur les axes X et Z ou rotation autour de l’axe Y. Enfin, dernière
chose, mettez à jour la position visée par la caméra, ainsi que la matrice de vue. Le code
ci-dessous présente l’ensemble de la méthode Update() qui implémente maintenant la
nouvelle caméra.
Exemple de déplacement de la caméra
protected override void Update(GameTime gameTime)
{
Matrix movement = Matrix.CreateRotationY(cameraYaw);
if(Keyboard.GetState().IsKeyDown(Keys.Up) || Keyboard.GetState()
➥.IsKeyDown(Keys.Down))
{
Vector3 vector = Vector3.Zero;
if (Keyboard.GetState().IsKeyDown(Keys.Up))
vector = new Vector3(0, 0, moveSpeed);
if (Keyboard.GetState().IsKeyDown(Keys.Down))
vector = new Vector3(0, 0, -moveSpeed);
vector = Vector3.Transform(vector, movement);
cameraPosition.Z += vector.Z;
cameraPosition.X += vector.X;
}
if (Keyboard.GetState().IsKeyDown(Keys.Left))
cameraYaw += rotationSpeed;
if (Keyboard.GetState().IsKeyDown(Keys.Right))
cameraYaw -= rotationSpeed;
if (Keyboard.GetState().IsKeyDown(Keys.Escape))
this.Exit();
cameraTarget = cameraPosition + Vector3.Transform(Vector3.Backward, movement);
Matrix.CreateLookAt(ref cameraPosition, ref cameraTarget, ref cameraUpVector,
➥out view);
base.Update(gameTime);
}
Il ne vous reste plus qu’à tester la nouvelle caméra (figure 12-15).
Pour aller plus loin
Sur le site de MSDN, vous trouverez plusieurs exemples de création de caméras, en vue subjective, à la
troisième personne… Il est également expliqué comment faire suivre une ligne à la caméra :
http://msdn.microsoft.com/en-us/library/bb203904.aspx/
=Labat FM.book Page 278 Vendredi, 19. juin 2009 4:01 16
Précédent

- 299/366

Suivant