PDA

Ver la versión completa : ayuda scroll sobre personaje



Neodreamer
21/12/2004, 22:10
Hola, me estoy volviendo loko con el scroll....no entiendo bien su uso y estoy flipando en colores.....tengo un fondo de 640x480 para q sea mas grande q la pantalla....tengo un prota q se mueve genial con su angle y advance....pero no se como hacer para q la camara del scroll siga a mi personaje por el mundillo....
ayuda please:

CODE.............................................. ...................
Program mi_juego;
Global fichero;
id_marine;
Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");
start_scroll(0,fichero,26,0,0,3);
marine();
End

Process marine()
Begin
ctype=c_scroll;
x=100;y=100;
graph=1;
Frame;


Loop
If (key(_up));graph++; advance(4);
If(graph>25) graph=1;
End
End
If (key(_down));graph--; advance(-4);
If(graph<1); graph=25;
End
End
If(key(_left)):angle=angle+15000;
graph=4;
End
If(key(_right)):angle=angle-15000;
graph=4;
End
If (key(_esc)) exit("",0);End

Frame;
End
End

CODE.............................................. ...............

espero ansioso

Hokutoy
21/12/2004, 22:25
Prueba a poner:
ID_marine=marine(); //Etiqueta para identificar tu proceso Marine
scroll[0].camera=id_marine; //para fijar la camara sobre el proceso marine.


Con esto te tendría que funcionar-

Hokutoy
21/12/2004, 22:28
Para ser mas precisos:

CODE.............................................. ...................
Program mi_juego;
Global fichero;

Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");
id_marine=marine();
start_scroll(0,fichero,26,0,0,3);
scroll[0].camera=id_marine;
End

Etc etc etc

PauTo
21/12/2004, 22:28
Creo (nunca he usado scroll en fenix) que lo que te falta es decirle que la camara es el marine algo asi como:



Program mi_juego;
Global fichero;
id_marine;
Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");

start_scroll(0,fichero,26,0,0,3);
id_marine=marine();
scroll.camera = id_marine;

End


Edit: Eso, lo que ha dicho Hokutoy! (lento q soy)

Loren
21/12/2004, 22:32
Prueba esto:


CODE.............................................. ...................
Program mi_juego;
Global fichero;
id_marine;
Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");
start_scroll(0,fichero,26,0,0,3);
scroll.camera=marine(); //Añadidomarine();
End

Process marine()
Begin
ctype=c_scroll;
scroll.camera=id; //Añadido
x=100;y=100;
graph=1;
Frame;


Loop
If (key(_up));graph++; advance(4);
If(graph>25) graph=1;
End
End
If (key(_down));graph--; advance(-4);
If(graph<1); graph=25;
End
End
If(key(_left)):angle=angle+15000;
graph=4;
End
If(key(_right)):angle=angle-15000;
graph=4;
End
If (key(_esc)) exit("",0);End

Frame;
End
End

Neodreamer
21/12/2004, 22:32
Gracias x la rapidez, pero os cuento....eso ya lo intente basandome en otros ejemplos pero....cuando pongo esas dos lineas me dice q no encuentra el fondo 0,26....pero si no las pongo, solo pongo start_scroll....me lo pone pero fijo osea q si q lo carga.....raro no? sera fallo de compilador?
1saludo y gracias de nuevo

Loren
21/12/2004, 22:44
El problema entonces esta en los parametros de la función start_scroll; si solo usas un fpg tendrias que poner todos los parametros a cero menos el tercero que es el numero del grafico.

Te pongo la ayuda de Fenix de esta funcion:

START_SCROLL (INT numero, INT librería, INT gráfico, INT fondo, INT región, INT flags)
Esta función inicializa una zona de scroll en pantalla. La zona de scroll consiste en uno o dos gráficos sobrepuestos que pueden desplazarse, por encima de los cuales se dibujan aquellos procesos que han sido preparados para visualizarse dentro de un scroll.
Pueden haber hasta 10 scrolls simultaneos en pantalla, diferenciados por un código entre el 0 y el 9. Dicho código identifica el scroll dentro de la estructura global scroll. Para que un proceso se visualice en varias zonas de scroll simultáneamente, pueden sumarse los resultados. Así, con un valor en ctype de 7, el proceso se visualizará en las áreas de scroll 0, 1 y 2. Una vez un proceso tiene una variable ctype distinta de cero, sus coordenadas X e Y pasan a referirse a la zona de scroll y dejan de ser coordenadas en pantalla.
El tamaño de esta zona de scroll normalmente está limitada por el tamaño de los gráficos que se utilizan como suelo o fondo, Así, con un gráfico de fondo de 1024x1024, sólo pueden visualizarse en zonas del tamaño de la pantalla que entren dentro de este rango de coordenadas. Si se desea un área ilimitada, es preciso indicar en el parámetro flags que estos gráficos se repiten horizontalmente, verticalmente o en ambas direcciones (formando así una trama o textura).
Esta función inicializa el scroll y es necesaria para especificar los gráficos y la zona ocupada por el scroll, sin embargo la estrutura global scroll permite modificar en mitad de la ejecución normal del juego parámetros del scroll tales como velocidad de movimiento, proceso al cual el scroll debe "seguir", activar la transparencia en los gráficos, y otras posibilidades de cada scroll.

Parámetros:
INT número: Número de scroll (0-9).
INT librería: Identificador de la librería donde se encuentran los gráficos de fondo.
INT gráfico: Gráfico del "suelo" encima del cual se desplazan los procesos, o 0 para ninguno.
INT fondo: Gráfico de "fondo" que se desplaza por detrás del gráfico anterior, o 0 para ninguno.
INT región: Número de región que delimita el espacio en pantalla ocupado por la zona de scroll.
INT flags: Opciones que afectan al funcionamiento del scroll. Puede ser 0 (normal) o bien la suma de uno o más valores de la siguiente tabla:
1: El gráfico principal se repite horizontalmente.
2: El gráfico principal se repite verticalmente.
4: El gráfico de fondo se repite orizontalemente.
8: El gráfico de fondo se repite verticalmente.

Neodreamer
21/12/2004, 23:22
Nada Loren.....he puesto todo a 0 incluso el fichero en lugar de cargarlo como tal, al ser el primero seria el 0 como tu bien dices pero me sigue dando el error de scroll 0,26....pero no puede ser esa linea xq si kito lo q tu me decias me pone el fondo 26 con la funcion start_scroll, pero no se mueve...me explico?

CODE..................................
Program mi_juego;
Global fichero;
Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");
start_scroll(0,0,26,0,0,0);
scroll.camera=marine();
marine();
End

Process marine()
Begin
ctype=c_scroll;
scroll.camera=id;
x=100;y=100;
graph=1;
Frame;


Loop
If (key(_up));graph++; advance(4);
.............. movimientos del personaje....

Hokutoy
22/12/2004, 00:08
Pues no se que decirte pq tendría que funcionarte...
Has mirado los ejemplos de Oscar Braindead?
Hechales un vistazo y prueba a editar sobre ellos a ver lo que pasa... creo que el ejemplo numero 4 tiene un scrool que funciona.

PD: Doy por supuesto que en tu FPG hay un grafico con el número 26 asignado no?

Hokutoy
22/12/2004, 00:11
CODE..................................
Program mi_juego;
Global fichero;
Begin
set_mode (320,240,8);
fichero=load_fpg("Andando1.fpg");
start_scroll(0,0,26,0,0,0);
scroll.camera=marine();
marine();
End


Esto esta mal. No puedes poner scroll.camera=marine().
Primero has de "etiquetar" el proceso marine() con un tag (Ejemplo: ID_marine=marine();
Despues usar ese tag para indicar la camara (Ejemplo: scroll.camera=ID_marine;

PD: Has probado el codigo de mi segundo post tal cual lo he escrito?

Neodreamer
22/12/2004, 00:21
Valeeeeeeeee!!!!!
Movida muy rara.....lo tenia bien desde el principio y me estaba volviendo loko....el caso es q desde msdos, con fxc y fxi va perfecto todo pero en firebird me dice error de fondo 0,26....misterios de rutas y esas cosas....
Lo descubri al intentar ejecutar un ejemplo sencillo q tenia x aqui siendo correcto y dando el mismo fallo....pero xq me pasa esto? xq menudo coñazo tener q hacer esto todo el rato no?
AH si, el flamebird en win98 no va definitivamente.....los creadores no lo habian probado asik ya lo digo yo....le faltaba una dll o algo asi q me descargue pero al ejecutarlo desaparece......
1saludo y muchas gracias a todos.....

p.d: supongo q ahora para q todos los procesos enemigos y disparos y demas interactuen solo se ha de poner lo de ctype=c_scroll en todos ellos no?

Hokutoy
22/12/2004, 00:40
GRRRR!!!
Norma número 1. Compilar siempre desde ms-2!!!
Jejejeje
PD: Aunque con arrastrar tu codigo.prg encima del FXC.exe ya te crea solo el codigo.dcb

Byes!

nazca
22/12/2004, 01:31
No, no, no, no y no!!!
Norma número menos uno: quitar la opción "Autoincluir ficheros en el DCB" de las opciones del Firebird.

Neodreamer
22/12/2004, 01:39
Ja Ja Ja!!!!!!!!!!!!
Muchas gracias Nazca....era eso. Creo q ahora se agilizara mi creacion y sus pruebas.
1saludo y gracias a todos