Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/12/2010, 05:03
Avatar de dual3nigma
dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 122
Sprites Direct2D

Hola! ¿Qué tal les va?

Tengo un problema, estoy trabajando con direct2d y lo que estoy tratando de hacer es crear una animacion apartir de un sprite, es decir tengo esta imagen :
y quiero que se vea la animacion de megaman corriendo, para eso tengo esta funcion por ahora:
Código C++:
Ver original
  1. void Render() {
  2.                 // Este es el desplazamiento que tendra la imagen en cada cuadro
  3.         static float actual = 2.0f;
  4.  
  5.         objetivo->BeginDraw();
  6.  
  7.         objetivo->Clear(D2D1::ColorF(D2D1::ColorF::SkyBlue));
  8.  
  9.                 // Aqui corto la imagen para que solo se vea un cuadro de 50x45
  10.         objetivo->PushAxisAlignedClip(D2D1::RectF(0.0f, 0.0f, 50.0f, 45.0f),
  11.             D2D1_ANTIALIAS_MODE_PER_PRIMITIVE);
  12.  
  13.                // Aqui dibujo la imagen desplazada de acuerdo al valor de actual
  14.         objetivo->DrawBitmap(imagen,
  15.             D2D1::RectF(-(50.0f*actual), 0.0f, imagen->GetSize().width, imagen->GetSize().height));
  16.  
  17.         objetivo->PopAxisAlignedClip();
  18.  
  19.         objetivo->EndDraw();
  20.  
  21.                 // lo reinicio
  22.         actual++;
  23.  
  24.         if(actual > 11.0f) actual = 0.0f;
  25.     }

Ahora lo que no entiendo es por que si tengo actual en 0.0f o en 1.0f toma bien el offset es decir me muestra el primer y el segundo cuadro respectivamente, pero de ahi en adelante todo se ve mal, es decir asi mas o menos:



Alguien sabe como hacer bien algo asi? (me refiero a lo de hacer animaciones con sprites) Ah y por cierto, la imagen la tengo bien dividida en 11 cuadros de 50px

Espero que me puedan ayudar!
Gracias!