Nuevo componente en XNACommunity – MuevePersonaje

27 04 2007

Hola!! aqui os dejo una explicación de mi GameComponent Cocodrilo que os podeis descargar de www.codeplex.com/XNAcommunity (aqui aparece como muevePersonaje).

Bueno, los atributos que declaro al principio son básicamente:

1.-La posicion del cocodrilo en pantalla (Vector2d)

2.-Un array de texturas en el que almaceno todas las texturas del personaje. Cada una de las texturas es digamos un fotograma del cocodrilo en movimiento de forma que pasadas una detrás de otra de forma rápida, da sensación de movimiento.

3.-El spriteBatch que es básicamente el objeto que se encarga de dibujar en pantalla

4.-También defino una variable private float updateTime que va a controlar las veces que se ejecuta el método update. Esto lo hago así porque el método update se llama unas 60 veces por segundo, y utilizando la variable como vereis en dicho método conseguimos que se ejecute unas 15 veces de forma que nuestro personaje no se mueve tan rápido ( podéis provar vosotros mismos lo que pasa)

5.- Y por último defino una serie de enteros que van a ser los encargados de indexar el array de texturas. Por ejemplo si el cocodrilo se mueva hacia arriba el spriteBatch solo tendrá que dibujar las texturas del cocodrilo andando hacia arriba.

Después de esto podemos ver que en el método inicialize se inicializan los punteros que indexan el array además del spriteBatch y demás objetos. En el método LoadGraphicsContent simplemente cargamos las texturas en el content pipeline.

En el método update se limita a llamar a mueveCocodrilo() que es el método encargado de capturar las teclas que se estén pulsando en ese momento y dependiendo de ello se llamarán a los métodos responsables de actualizar tanto la posición del cocodrilo como la textura que tiene que mostrar el spriteBatch. Por ejemplo, si pulsamos la tecla de dirección “arriba” se llamará al método :

private void actualizaTextura_Norte()
{
posicion.Y -= 6; //actualiza la posición del cocodrilo
norte++; //actualiza el indice del array
nTextura = norte; //nTextura es la variable que utilizo para indexar el array (ver método draw)

if (nTextura > 15) //si se llega al final de las texturas de movimiento hacia arriba se restaura el valor para que las siga mostrando
{
nTextura = 8;
norte = 7;
}
}

Una de las posibles mejoras que podríamos hacerle sería en vez de tener un array de texturas, tener una sola textura y tener un array de strings (cada uno será el path de donde están almacenadas las texturas) de esta forma se ahorrará algo de espacio.

Bueno, básicamente este es el funcionamiento de mi componente espero que os sirva de ayuda!!!
Saludos!!


Acciones

Información

Deja un comentario