Bueno, la cosa es que estoy haciendo el boss final de mi juego, y me dan un problema las colisiones. La colisión del boss con la nave, lo detecta perfectamente; pero, la colisión con las balas, no.
http://pensarescompartir.com/lahsoft/lahsoftcorp/?direc=fenix/&id=Demo_boss_final.rar
¿Qué puede ser?
global
int graficos, pnav, pbos;
end
process Main()
begin
set_mode(640,480,32,MODE_FULLSCREEN);
set_fps(60,1);
graficos=load_fpg("dll\prueba.fpg");
pbos=boss();
pnav=naveesp();
bossom();
loop
frame;
end
end
process boss()
private
int vida;
int ID_Disparo_acertado;
begin
x=320;
y=240;
z=5;
graph=22;
Vida=20000;
loop
ID_Disparo_acertado=collision(type disparog);
if (ID_disparo_acertado !=0)
vida=vida-1;
end
if(collision (type naveesp))
end
frame;
end
end
process bossom()
private
int i,j=0,aux;
end
begin
graph=20;
x=320;
y=240;
loop
frame;
end
end
process naveesp()
private
int cont=15;
end
begin
x=320;
y=380;
graph=2;
write_var(0,51,50,1,angle);
loop
if (key(_up)) y-=7; end
if (key(_down)) y+=7; end
if (key(_left)) x-=7; end
if (key(_right)) x+=7; end
if (x>627) x=627; end
if (x<13) x=13; end
if(y>470) y=470; end
if(y<10) y=10; end
angle=get_angle(pbos);
if (key(_x))
if(cont>15)
disparog(X,Y,angle,4,4);
disparog(X,Y,angle-100,4,4);
cont=0;
else
cont++;
end
end
if(!collision (type boss))
advance(3);
end
frame;
end
end
process disparog(x,y,angle,int vel,graph)
begin
repeat
advance(vel);
frame;
until(y>480 or x < -20 or x > 670 or y<-20)
end
A primera vista, creo que no has puesto un "IF (collision (type boss))" en el proceso disparog().
Veo que en el proceso boss() sólo le has asignado el valor a ID_Disparo_acertado, pero no veo la condición. No sé si me explico... :D
Nada, en la línea de debajo ya lo dices.
Vale, tema resuelto. Si colisionaban. Pero se me olvidaba poner:
signal(ID_Disparo_acertado,s_kill);
jajaja