Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Problema con sprites.

Iniciado por Puyover, 05 de Marzo de 2007, 10:37:08 PM

« anterior - próximo »

Puyover

Hola a todos!

veréis tengo esta función:

void PJHandler(void) {
// Realizamos un mapeado del teclado
   keyboard = SDL_GetKeyState(NULL);

// Comprobamos los movimientos de Link
   if(keyboard[SDLK_UP]) {
       Link->SelectAnim(SPRSTATE_UP);
       spr_posX = Link->GetPosX();
       spr_posY = Link->GetPosY() - spr_velY;
       Link->SetPosition(spr_posX, spr_posY);
   }
   if(keyboard[SDLK_LEFT]) {
       Link->SelectAnim(SPRSTATE_LEFT);
       spr_posX = Link->GetPosX() - spr_velX;
       spr_posY = Link->GetPosY();
       Link->SetPosition(spr_posX, spr_posY);
   }
   if(keyboard[SDLK_RIGHT]) {
       Link->SelectAnim(SPRSTATE_RIGHT);
       spr_posX = Link->GetPosX() + spr_velX;
       spr_posY = Link->GetPosY();
       Link->SetPosition(spr_posX, spr_posY);
   }
   if(keyboard[SDLK_DOWN]) {
       Link->SelectAnim(SPRSTATE_DOWN);
       spr_posX = Link->GetPosX();
       spr_posY = Link->GetPosY() + spr_velY;
       Link->SetPosition(spr_posX, spr_posY);
   }
}


Funcionar funciona bien. El problema es que no se hacer, para que cuando se deje de pulsar la tecla Arriba, la animación se pare, y se el muñeco se quede mirando hacia arriba.

Muchas gracias y saludos!!
Vivimos en la era de la televisión. Una sola toma de una enfermera bonita ayudando a un viejo a salir de una sala dice más que todas las estadísticas sanitarias. -Margaret Thatcher

Pogacha

Tendras que hacer uso de la dinamica.
Guarda el estado del frame anterior en una variable o tomala desde algun lado.

   if(keyboard[SDLK_UP]) {
       Link->SelectAnim(SPRSTATE_UP);
       spr_posX = Link->GetPosX();
       spr_posY = Link->GetPosY() - spr_velY;
       Link->SetPosition(spr_posX, spr_posY);
   } else if(Link->GetAnim() == SPRSTATE_UP)
               Link->SelectAnim(SPRSTATE_LOOKING_UP);


Puedes seguir mejorandolo y enriquesiendolo.
Saludos!

Harko

Tienes que usar la funcion Link->Pause(); para detener la animacion en el frame que quieras seleccionandolo con Link->SelectFrame(numero);

Precisamente estaba yo probando cosillas de estas con tiles y tal jeje.

Edit: Se me olvidaba, usa Resume(); si quieres volver a poner la animacion en marcha.

Harko.
-=Harko´s Blog=-
Fui el primer civil en probar el "Lord of Creatures" y ademas usaban mis cascos. :D

-=Portfolio=-

Alguno de mis juegos:
-=Feed The Frog=-

Neroncity

Puyover

Vale muchas gracias!

Voy a probar a ver que tal.

Salu2!!

EDITO: Ya me había dado cuenta de lo del resume jaja.
En fin, que así me funciona perfectamente. Muchas gracias a los dos!
Vivimos en la era de la televisión. Una sola toma de una enfermera bonita ayudando a un viejo a salir de una sala dice más que todas las estadísticas sanitarias. -Margaret Thatcher

TheAzazel

Que bien que os ayudeis unos a otros porque yo tengo unos lios encima de narices! jeje

volvere pronto... e intentare pasarme lo mas regularmente posible por el foro.

Saludos!