using System; using System.Collections.Generic; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace Ejemplo2D { class AnimSprite { private List SpriteMov = new List(); //Lista de imagenes que se utilizan para la animación de nuestro personaje public int XPos, YPos; // Coordenadas de posición public int FrameActual = 0; public int UltimaDir; //0 Derecha 1 Izquierda public float Angulo; public Vector2 Origen; public int Largo; //dimensiones de los sprites public int Altura; public AnimSprite() { XPos = 100; YPos = 395; Angulo=0; Origen = new Vector2(0,0); } public AnimSprite(int PosX, int PosY, float Angle, Vector2 Origim) { XPos = PosX; YPos = PosY; Angulo = Angle; Origen = Origim; } // Función que dibuja en pantalla nuestro sprite public void Draw(SpriteBatch spriteBatch) { spriteBatch.Begin(); if (UltimaDir == 0) //Derecha spriteBatch.Draw(SpriteMov[FrameActual], new Rectangle(XPos, YPos, SpriteMov[FrameActual].Width, SpriteMov[FrameActual].Height), null, Color.White, Angulo, Origen, SpriteEffects.None, 0f); else if (UltimaDir == 1) //Izquiera spriteBatch.Draw(SpriteMov[FrameActual], new Rectangle(XPos, YPos, SpriteMov[FrameActual].Width, SpriteMov[FrameActual].Height), null, Color.White, Angulo, Origen, SpriteEffects.FlipHorizontally, 0f); spriteBatch.End(); } // Función que actualiza el frame a mostrar en la animación public void UpdateMov() { if (FrameActual < 5) FrameActual = FrameActual + 1; else FrameActual = 0; } public void CargaImagen(Texture2D Sprite) { SpriteMov.Add(Sprite); Altura = SpriteMov[0].Height; Largo = SpriteMov[0].Width; } } }