Duda de novato (Fenix)

Started by Drumpi, June 12, 2009, 12:00:32 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola a todos:

Bueno, pues nada, que me he quedado atascado, a la vez que anodadado, con un error tan tonto como que no me detecta la colisión. No sé si es que las neuronas las tengo en huelga por el sobreesfuerzo de los exámenes o es que soy así de malo.
Os comento: tengo este juego de navecitas playerVSplayer, los disparos colisionan sin problemas con rocas, obstáculos y naves, pero en el nivel que estoy haciendo ahora, el de los meteoritos, las barreras protectoras no detectan la colisión con los disparos, y no se por qué. El código de los disparos, naves y barreras están todos juntos en naves.inc, está todo bastante bien estructurado (creo), no creo que os perdais.
Empiezo a pensar que se me ha corrompido el compilador.

Muchas gracias. Podeis jugarlo si quereis, la pega es que los controles están definidos para la GP2X, así que el P1 usa arriba, abajo y S, y el P2 usa Z, X y espacio. La definición de las teclas está en teclas.inc (podeis usarlo para vuestros proyectos con GP2X si quereis).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Ultimo fichero (he añadido mi compilador-intérprete, por si acaso).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

splinter_work

a ver si te podemos dar una mano... saludos...

SplinterGU

#3
caramba! si que choca, bueno, por lo menos en bennu... igual hay un monton de cosas que necesitan correccion con respecto al collision... aca te pongo los fixes, pero para bennu... no se si funciona en fenix...

bueno, en fenix tambien colisiona, pero incluso colisiona la propia barrera (cuando no deberia)... en fenix incluso parece que el arbol genealogico no va muy bien, supongo que en realidad se trata de que nunca quedan hijos huerfanos. (este texto no va, me confundi yo, tenia el write fuera del if... :P )

No se, pero te sugiero uses bennu.

funcion barrera correcta


process barrera (numero)
private
      temp;
begin
    //priority=id_jugadores[numero].priority-1;
    resolution=id_jugadores[numero].resolution;
    file=gr_barrera;
    graph=1;
    //flags=16;
    switch (numero)
    case 0: angle=-90000; end
    case 1: angle=90000; end
    end
    write_int(0,0,0,0,&temp);
    while (exists(id_jugadores[numero]))
          switch (numero)
          case 0: x=id_jugadores[numero].x+200; end
          case 1: x=id_jugadores[numero].x-200; end
          end
          y=id_jugadores[numero].y;

          while(temp=collision(type disparo))
             if (temp.father.father != id_jugadores[numero])
             write(0,10,10,0,"CHOQUE");
               say ("CHOQUE");
                temp.energia=0;
             end
          end
          /*temp=collision(type disparo_rapido);
          if (temp)
             if (temp.father != id_jugadores[numero])
                temp.energia=0;
             end
          end
          temp=collision(type disparo_cargado);
          if (temp)
             if (temp.father != id_jugadores[numero])
                temp.energia=0;
             end
          end*/

          frame;
    end
end


funcion barrera correcta
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

El problema es que disparo_unico no tiene graph con qué chocar
Cambia esto

           temp=collision(type disparo_unico);
           if (temp)
              write(0,0,0,0,"CHOQUE");
              if (temp.father != id_jugadores[numero])
                 temp.energia=0;
              end
           end


Por esto otro y va bien. El padre del padre de disparo es el player, por eso está dos veces :D

           temp=collision(type disparo);
           if (temp)
              write(0,0,0,0,"CHOQUE");
              if (temp.father.father != id_jugadores[numero])
                 temp.energia=0;
              end
           end


El problema es que el disparo da a tu propia barrera también ya que sale de dentro ;D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

eso no es lo unico que hay que cambiar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

por?
probado en bennu y fenix y va bien.
No puse el while porque, en teoría, no va a haber dos disparos a la vez colisionados en la barrera.
Aunque ahora que lo pienso como el disparo de tu nave también choca en tu barrera sí se podría dar el caso.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

exacto!

podria ser que tu disparo y el disparo de tu enemigo, pasen a la vez por alguna de las 2 barreras.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

#8
Ostras, es verdad, sabía que era un fallo tonto:
Cada tipo de disparo llamaba a disparo (que es el encargado de moverse y llevar la animación... aunque no recuerdo ahora por qué lo dividí así ¿?).
Comprobar colision con disparo (supongo que sería por esto, por simplificar, o por algun tipo de disparo raro más adelante), y comprobar que el padre de su padre no es el padre de la barrera (es decir, comprobar que no estamos atravesando la barrera propia).
Muchas gracias a los dos, karma para ambos :D

PD: si, más adelante lo haré en Bennu, como comenté en otro hilo, pero mientras, estoy haciendo las pruebas en Fenix (cuando lo empecé, aun no existía "Bennu2X" ;D)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)