viernes, 17 de julio de 2009

Dejamos el salto fino

Hasta ahora a la hora de caer de un salto nuestro personaje realizaba una misteriosa maniobra. Justo antes de caer al suelo frenaba de forma misteriosa. Lo que ocurría era que el código al obtener una colisión con el suelo reseteaba todos los valores del salto y empezaba a caer de nuevo.

Eso hay que cambiarlo.

Lo único que se necesita es que al obtener una colisión, como estamos cayendo con una 'fuerza' de más de un pixel, debemos encontrar la primera posición libre antes de las plataformas. Un sencillo for realizará este trabajo (NSMB.cpp):


bool NSMB::BeforeVBL() {
if (tiempoSalto-- < 0) {

tiempoSalto = MOVIMIENTO_VELOCIDAD_INTERMEDIA;
int y = koopa->GetY();
koopa->SetY(y + fuerzaSalto);
if (topScreen->IsCollision(koopa, topScreen->GetBackgroundsX() / 8, topScreen->GetBackgroundsY() / 8)) {
if (fuerzaSalto > 0) {
int i = 0;
for (i = 0; i < MAXIMA_FUERZA_CAIDA; i++) {
koopa->MoveUp();
if (!topScreen->IsCollision(koopa, topScreen->GetBackgroundsX() / 8, topScreen->GetBackgroundsY() / 8)) break;
}
} else {
koopa->SetY(y);
}
fuerzaSalto = 0;
volando = false;
} else {
if (fuerzaSalto < MAXIMA_FUERZA_CAIDA) fuerzaSalto++;
volando = true;
}
}
return 1;
}


El aspecto del juego no ha cambido demasiado:

Otras cosas que hemos hecho es seguir 'mejorando' la librería. Por ejemplo, las funciones de mover un sprite, MoveLeft, MoveUp que tengan el parámetro opcional y así realizar un movimiento de 1 por defecto, preparando el código para coger las monedas, etc.

Esta semana si vamos a colgar el proyecto, tal cual está.

Saludos

P.D. Otra cosa, estamos en verano y los post no serán tan fluidos, pero supongo que tampoco las visitas.

4 comentarios:

Tiex dijo...

Akabo de encontrar tu blog y me parece muy interesante. Me ha hecho replantearme probar a programar para DS. Los tutoriales están muy claros y llenos de información muy util. Enhorabuena.

Tiex dijo...

Estoy aprendiendo bastante gracias a tu blog y mi interes por programar para DS está aumentando por momentos. He recopilado todo tu blog en un Word, por si te interesa tenerlo solo tienes que pedirmelo.

Inigo dijo...

Me alegro!! En estos momentos no estoy avanzando mucho con el blog pero ya sacaré tiempo.

Saludos

Anónimo dijo...

Llevo siguiendo tu blog desde hace tiempo i ya k estamos con todo esto de las plataformas mi pregunta es si podrias enseñar en tu próximo post como hacer k por ejemplo al pulsar a el sprite de un puño o si apretas ele se defiende en el caparazón.
I los enemigos!!!!!!