[Ayuda PAlib] Avanzar por la pantalla

PiratePila está baneado por "crearse clones para trollear"
Hola a Todos !

- Pues estoy "creando" mi propio juego (gracias Plata por los tutoriales) y tengo un problema. Estoy usando el motor del ejemplo del Paper Mario, los que tengais el PAlib instalado podéis verlo en esta ruta:

C:\devkitPro\PAlibExamples\3d\3DSprites\Animations\PaperMario

Lo que quiero saber es como puedo hacer que ese Mario avanze hacia otro background, es decir, algo tipo "Super Mario Land" que sigue adelante en la pantalla hasta llegar a un punto concreto.

Algo así vaya;

[Pantalla Incial] -> [bg1] [bg2] [bg3] [bg4] [bgFinal]

Así, que avanze por diferentes backgrounds hasta llegar al deseado.

A ver si me podéis echar un cable.

Un saludo !
podrias hacer como cambios de nivel, lo mismo que cuando finalizas una partida, pero hacer que vayas a un "subnivel".

Primero compruebas que el personaje esté al final del recorrido del background, cuando el personaje llegue a un punto determinado haces un fade off, guardas el tiempo que llevas recorrido en alguna variable, cargas el subnivel como si de una pantalla totalmente nueva se tratase, pones al personaje al principio del background, generas procesos como enemigos, disposición de bonus, etc, cargas el tiempo que llevabas de la variable en la que lo habías puesto, haces un fade on y pones el timer en marcha... si quieres algo más específico ya me tocaría ponerme a programarlo, y no tengo ni el entorno instalado, que formatee hace un par de días...

Espero haberte ayudado en algo, aunque a estas horas de la noche es probable que ya desvaríe...

Saludos!!
Pues, como te an dicho, cuando el personaje este en unas coordenadas, que carge otro bg como si fuera un subnivel.

Yo te recomendaria hacer un mapa grande y usar scroll(tipo mario bros)...

Despues para lo de pasar de un bg a otro, enved de un fundido puedes usar una funcion de palib (C:\devkitPro\PAlibExamples\Transitions) que te hace una transicion tipo zelda link´s awering, seasons, ages... (los de la color) xD


salu2
PiratePila está baneado por "crearse clones para trollear"
Si, lo que estaba haciendo es un background más largo.

¿ Alguien me echa una mano con el scroll ?

Me gustaría hacerlo con esto;

C:\devkitPro\PAlibExamples\3d\3DSprites\Animations\PaperMario

Es decir, que ese Mario continuara recto hasta que se acabara la pantalla.

A ver si alguien me puede ayudar con el codigo, lo agradecería.

Gracias a los dos. [oki]
pues seria muy facil, un scroll MUY BASICO (pero funciona) seria crear dos variables (x e y)

y usar la funcion "PA_BGScrollXY" y hacer que el valor de las variables suba.

ej:

s32 scrollx
s32 scrolly

/*suponiendo que creaste una estructura para el personaje, sino, donde pongo personaje.X seria poner una variable en la posicion x y otra en la Y del mario.*/

//////////////////////////////////////POSICIONES X//////////////////////////////////////

//esto es para avanzar hacia la derecha, x seria, por ejemplo, 240, cuando este en la coordenada x 240 de la pantalla que avance.
if (personaje.x == laposiciondepantallaquesea)
{
// el valor de la variable sube
scrollx ++;
}

/* esto para avanzar hacia la izquierda (retroceder) (ej posicion=10)
pero recuerda que la posicion inicial del personaje, deve de ser mayor que este valor*/
if (personaje.x == laposiciondepantallaquesea)
{
// el valor de la variable baja
scrollx --;
}


//////////////////////////////////////POSICIONES Y//////////////////////////////////////



//para avanzar para arriva ( lo mismo pero con los valores Y)
//OJO que para arriva las posiciones de y son negativas, no te confundas
if (personaje.y == laposiciondepantallaquesea)
{
// el valor de la variable sube
scrolly --;
}



//esto para avanzar hacia abajo, por lo que explique antes, hacemos que el valor suba
if (personaje.y == laposiciondepantallaquesea)
{
// el valor de la variable baja
scrolly ++;
}



// hacemos el scroll
PA_BGScrollXY(0, //pantalla
3, //capa en la que estan los bg (recomiendo la 3)
scrollx, //variable x
scrolly); //variable y



Despues, si vas a usar otro mapa por detras de colisiones,
seria poner la misma funcion que te he puesto antes para que haga tambien scroll.

ej:


// Ahi esta el scroll para el bg de la capa 3.


// hacemos el scroll
PA_BGScrollXY(0, //pantalla
3, //capa en la que estan los bg (recomiendo la 3)
scrollx, //variable x
scrolly); //variable y

// podemos usar lo mismo para la capa 2, y las demas.

// hacemos el scroll
PA_BGScrollXY(0, //pantalla
2, //capa en la que estan los bg (recomiendo la 3)
scrollx, //variable x
scrolly); //variable y


Lo que si que te digo, es que si usas un mapa de colisiones detras del "normal" pongas el de colisiones en la ultima capa y el que se ve en la capa 2

Como complemento, para intentar resolver futuras dudas que tendras, y aunque seguramente no entiendas nada, y no te lo recomiendo mucho, pero si vas a (C:\devkitPro\PAlibExamples\Demos\PlatformGame\PlatformGame3) hay un ejemplo muy detallado sobre esto.

A mi gusto, es mucho mas sencilla y igual de eficad la solucion a scroll que yo te doy, pero aya tu.

espero que te haya ayudado y orientado un poco mas.

salu2

P.D: este tocho me le guardo pa algun tuto mas adelante xD
PiratePila está baneado por "crearse clones para trollear"
El PlatformGame3 ya lo miré, es con el que intenté hacerlo pero nada, no me salió bien, por eso lo pregunté por aquí.

Pero una cosa; ¿ Cómo puedo saber la posición del personaje ?

Supongo que será cuestión de ir probando hasta que me guste como quede, voy a intentar hacerlo ahora pero seguro que soy tan torpe que no me sale.

Gracias por la ayuda, ahora te diré si me ha servido. ;) [jaja]
no se si te e entendido bien, pero creo que tu quieres saber cuales son las x e y de tu personaje en cada momento, no?


si es eso, muy facil, creas dos variables, usa que se llame x y otra que se4 llame y.

despues, a x le pones la posicion x del personaje y con y haces lo mismo.

despues, donde se pone la posicion del sprite, se sustituye la x por la variable x y la y por la variable y.

despues, metes en el bucle lo siguiente:

PA_OutputText(1, 5, 5, Posicion x: %d, x);

PA_OutputText(1, 10, 10, Posicion y: %d, y);


y te va mostrando donde esta siempre x e y del personaje.

salu2
PiratePila está baneado por "crearse clones para trollear"
Sí, aunque solo me hace falta scroll de x ya que avanza hacia delante y atrás no como en un RPG que puedes ir hacia todos los lados.

Me da el siguiente error;

main.c
c:/devkitPro/EJERCICIOS/Kawa/source/main.c:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
make[1]: *** [main.o] Error 1
make: *** [build] Error 2

No se a que se debe, voy a intentar solucionarlo.
mira aver que tienes en la linea 11, tiene pinta de ser algo entre variables.

Me a pasado varias veces, pero nunca le he prestado atencion a este error, solo modificando la linea que me dava error tirava bien. (ya te digo que no me acuerdo por que es)

salu2
8 respuestas