| Volver al Inicio | Microsoft Student Tech Club: Universidad Libre |
Tutorial de XNA: Agregar el protagonista a nuestro juego

Paso 0: ¿En que consiste el juego?
Antes de empezar, debemos saber en que consiste el juego, para este tutorial se trata de un cañón o lanzador que se encarga de destruir chatarra espacial porque se ha convertido en un problema grave de contaminación espacial.
Paso 1: ¿Cómo se comportará nuestro protagonista?
Es un lanzador estacionario, el cual varía su ángulo de lanzamiento y a determinada orden, lanzará la bala o misil. Luego la animación del protagonista es variación del ángulo de salida del misil.
Paso 2: Buscando una imagen acorde a la animación
Nuevamente en www.bing.com podemos buscar una imagen que nos sirva en esta tarea. Y se encuentra esta, la cual esta bien porque requerimos una base (inmóvil) y el lanzador de balas (que adaptaremos para que lance misiles)

Paso 3: Convirtiendo las imágenes
Dividimos la imagen en dos partes (use por ejemplo un capturador de pantalla o algún software de manipulación de imágenes) y cada parte modifíquela con Paint .NET para archivos .TGA con transparencias. Así deben lucir:
![]() | ![]() |
Así deben quedar los archivos, en formato .TGA

Paso 4: Ahora los movemos al proyecto del juego que se está haciendo.

Paso 5: Generar la clase que soporta los actores del juego
Los actores (héroe, enemigos, balas) del juego son objetos, por tanto debemos generar una clase que soporte ese tipo de objetos, a la que llamaremos ObjetosJuego



En esa clase nueva agregamos todas las librerías que importa o usa Game1.cs y escribimos el esqueleto de la clase en sí.

Este es el código
| using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage; namespace PrimerJuego { class ObjetosJuego { } } |
Paso 6: ¿Qué debe ir en la clase que soporta los actores del juego?
Debemos recordar que todos los protagonistas del juego reciben el nombre de "sprite" (un término manejado por la industria).
En la nueva clase ObjetosJuego se añaden las propiedades que tendrá nuestro "sprite" lanzador y se genera el constructor por defecto, así queda el código de la clase

Este es el código:
| using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage; namespace PrimerJuego { class ObjetosJuego { public Texture2D sprite; //La textura (o imagen) que tendrá el sprite public Vector2 posicion; //En que punto se encuentra ubicado el sprite public Vector2 centro; //El centro por donde gira el lanzador public float rotacion; //Angulo de rotación del lanzador //Constructor public ObjetosJuego(Texture2D textura) { sprite = textura; //Recibe la textura por parámetro posicion = Vector2.Zero; // Posición [0,0] por defecto rotacion = (float) 0.0; //Rotación 0.0 en radianes por defecto centro = new Vector2(sprite.Width / 2, sprite.Height / 2); //El centro del sprite } } } |
Paso 7: Hacemos uso de la clase que soporta los actores.
Volvemos de nuevo a Game1.cs y agregamos las dos variables objeto que manejarán nuestro lanzador.

Paso 8: Se cargan las texturas de los actores
Ahora debemos inicializar esas variables con las texturas del lanzador y la base y eso se hace en LoadContent()

Paso 9: Se muestran las texturas de los actores.
Por último es mostrar nuestro protagonista en pantalla, para eso vamos al método Draw y escribimos el siguiente código

El código completo de Game1.cs es este que se presenta a continuación
| using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage; namespace PrimerJuego
} |
Al ejecutar, este es el resultado

Nota aclaratoria: La rutina Draw() es ejecutada por XNA cuando se determina que hay que dibujar un nuevo "frame" (Fotograma).
| Volver al Inicio | Célula Microsoft. Universidad Libre |