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:
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.
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.
Me alegro!! En estos momentos no estoy avanzando mucho con el blog pero ya sacaré tiempo.
Saludos
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!!!!!!
Publicar un comentario