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!!
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!
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.
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!
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!