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!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.