XNA Mexico Desarrollo de Videojuegos con XNA

29Apr/100

Tutorial: Moviendo al personaje con el control de XBOX360

Para poder seguir este tutorial, necesitas haber concluido el Tutorial 1: Animando un Sprite.
Ya que tenemos nuestro personaje caminando, estaría padre que en realidad pudiéramos controlarlo de alguna forma, ¿no?
Una de las maravillas de XNA es la facilidad que tiene para interactuar con el control del Xbox360, y precisamente es eso lo que vamos a hacer a continuación, el manejar nuestro personaje con el Thumbstick del control.

En la clase de Sprite es donde capturaremos el input del control, para esto es necesario que en la parte de arriba de la clase Sprite, agreguemos el namespace:

using Microsoft.Xna.Framework.Input;

Esto sirve para traer todas las clases auxiliares que tiene XNA para el manejo del input, con teclado, mouse o gamepad.
Ahora, para controlar la velocidad de nuestro personaje, vamos a agregar una nueva variable a la clase Sprite, esta se llamará velocidad y es float, la inicializamos en 0.5f.

float velocidad = 0.5f;

Una vez hecho esto, nos vamos a nuestro método Update() y al principio agregamos estas simples líneas de código:

GamePadState control = GamePad.GetState(PlayerIndex.One);
if (control.ThumbSticks.Left.X < 0) 

      posicion.X -= velocidad * gameTime.ElapsedGameTime.Milliseconds; 

else if (control.ThumbSticks.Left.X > 0)
     posicion.X += velocidad * gameTime.ElapsedGameTime.Milliseconds;

¿Qué está pasando aquí?
La primer linea la utilizamos para crear una instancia de la clase GamePadState, la cual representa el estado del control del XBOX360 en un instante en el tiempo, es decir, contiene información sobre qué botones están apretados, si los sticks están desplazados etc. PlayerIndex.One, lo usamos para indicar de qué control queremos obtener el estado.
Las clausulas if-elseif sirven para saber hacia dónde se movió el ThumbStick izquierdo. Su posición va de -1 siendo totalmente a la izquierda, 0 estando en medio y 1 estando hasta la derecha.
Una vez que sabemos hacia qué lado está moviéndose el stick, simplemente modificamos la posición de nuestro sprite:

posicion.X -= velocidad * gameTime.ElapsedGameTime.Milliseconds;

posicion.X += velocidad * gameTime.ElapsedGameTime.Milliseconds;

Basándonos en Xf = X0 + V*T,donde V es la velocidad y T es el tiempo, que en nuestro caso expresamos en milisegundos.

*Como ejercicio, ahora programa el movimiento vertical del personaje.

Espero que te haya servido el tutorial, si tienes dudas,  o sugerencias, escribelas en la sección de comentarios.

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.