Saludos muchachotes,
Estoy trabajando en un nuevo proyecto, de gran envergadura, orientado a Android como plataforma objetivo y me he decantado por utilizar este ligero fork de Bennu llamado PixStudio
Lo primero, he observado que rinde bastante bien, seguro que debido al uso de SDL2 y el buen trabajo que hayan hecho otros compañer@s,
Ahora al tema del hilo; estuve programando un scroll que es infinito en horizontal pero sólo tiene dos pantallas de alto; al crear el sprite (proceso) del protagonista, le asigno la camara a su identificador. El scroll funciona bien en la coordenada horizontal, pero no se está desplazando cuando muevo el sprite en la coordenada vertical. Por tanto, cuando el personaje baja o sube, la cámara no le sigue de forma vertical y me hecha al traste con el scroll de dos pantallas de alto...
Aquí está el código:
program battles;// Battles ; 17-3-2018
//import varios
GLOBAL
indice;
avance;
tiles_offset;
tiles;
gfxplayer;
sprites;
idplayer;
idcamara;
pantalla;
color_texto_original;
no_graph;
BYTE unlock_fps=0;
INCLUDE "easy.inc"
BEGIN
color_texto_original=get_text_color();
//full_screen=true;
set_mode(800,480,16);//color de 8 bits
set_fps(30,0);//30,0
tiles=fpg_load("tiles.fpg"); //bennu load_fpg , pix fpg_load
gfxplayer=fpg_load("gfxfase3.fpg");
//load_pal("sources/fase3/tiles.fpg");
pantalla=map_new(800,960,16);//bennu new_map , pix map_new
no_graph=map_new(0,0,16);
render_fase();
loop
if(key(_enter))
break;
end
if(key(_space))
while(key(_space))
frame;
end
if(unlock_fps==0)
set_fps(0,0);//máxima velocidad
unlock_fps=1;
else
set_fps(30,0);
unlock_fps=0;
end
end
frame;
end
fpg_unload(tiles); //bennu unload_fpg , pix fpg_unload
fpg_unload(gfxplayer);
map_unload(0,pantalla);
map_unload(0,no_graph);
exit();
END
//fin main
process render_fase()
private
INT n;
begin
file=tiles;
region_define(1,0,0,768,960);//bennu define_region , pix region_define
scroll_start(0,0,pantalla,0,1,3);//1 en lugar de 1 | 2 bennu start_scroll , pix scroll_start el scroll va en la región 1
scroll[0].flags1=0;
//scroll[0].flags2=128;//128
player();
//scroll[0].camera=idplayer;
indice=0;
avance=0;
write(0,20,200,4,fps);
loop
//delete_text(all_text);//debug
write(0,140,200,4,fps);
//write(0,170,200,4,"FPS");
//write(0,280,200,4,"Select unlock fps limit");
//write(0,120,220,4,"Memoria disponible(KB):");
//write(0,240,220,4,memory_free()/1024);
//write(0,40,200,4,"Start to exit");
frame;
end
end
process player()
begin
file=gfxplayer;
graph=1;
ctype=c_scroll;
cnumber=c_0;
//region=1;
x=384;
y=224;
z=10;
idplayer=id;
idcamara=camara();
//scroll[0].camera=camara();
loop
delete_text(all_text);
write(0,64,96,4,x);
write(0,64,128,4,y);
if(key(_right))
flags=0;
x += 2;
if(x > 384)
idcamara.x += 2;
end
end
if(key(_left))
flags=1;
x -= 2;
if(x < 8832)
idcamara.x -= 2;
end
end
if(key(_up))
y -= 2;
if(y < 672)
idcamara.y -= 2;
end
//scroll[0].y0 -= 2;
end
if(key(_down))
y += 2;
idcamara.y += 2;
//scroll[0].y0 += 2;
end
//límites del scroll
if(y<224)
y=224;
//scroll[0].y0 = 224;
end
if(y>890)
y=890;
//scroll[0].y0 = 672;
end
if(x<10) //160
x=10; //160
end
if(x>8832)//1088 1120 1088
x=8832;//1088
end//fin límites del scroll
//limites de la camara
if(idcamara.x<384)
idcamara.x = 384;
end
if(idcamara.x > 8832)
idcamara.x = 8832;
end
if(idcamara.y < 480)
idcamara.y = 480;
end
if(idcamara.y > 960)
idcamara.y = 960;
end
frame;
end
end
process camara()
begin
file=0;
graph=no_graph;
ctype=c_scroll;
cnumber=c_0;
//region=1;
x=384;
y=224;
z=10;
scroll[0].camera=id;
loop
frame;
end
end
seguramente sea una tontería, pero no sé porque no se desplaza en vertical... en cambio si configuro el scroll para que se repita también de forma vertical, si funciona bien la cámara, pero no me interesa que se repita indefinidamente también de forma vertical.
Otra cosa, en PixStudio, ¿Cuál es el color transparente? (Uso color de 16 bits), porque en BennuGD por defecto en esta modalidad de color es el RGB:0-0-0, el negro absoluto, pero en Pix los sprites están dibujando el color negro como si no fuese el color transparente.
También, ¿se puede cambiar el color transparente? (Se nota que he trasteado siempre en Fénix y Bennu sólo en color de 8 bits).
Gracias anticipadas,
Up!
Se ha añadido el código... ¡una ayudita payo!
Buenas. Mándame también FPGs y lo pruebo :)