Problema ultraextraño con collision

Started by Yawin, August 25, 2011, 04:23:18 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Os explico. Esta línea no me funciona:
if(!collision(type objetos) &&  map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))


Esta otra, sin embargo, sí:
if(!collision(type objetos) &&  !collision(type objetos) &&  map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))


¿Por qué?
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Outlaw

#1
A mi me parece que estás tratando de comparar valores con map_get_pixel, en posiciones que, si es con un solo proceso, me imagino que no se pueden comprobar todas al mismo tiempo, y parece que guardas los mapas en una tabla, pero me pregunto ¿están cargados en memoria para hacer la comprobación?... (yo como soy medio básico las comparaciones las hago con "==" "not" etc, dado que me resulta más fácil de leer)
"Life is cheap when the bounty is high"

Yawin

A mi "!=" me resulta más sencillo y visual que "not =". De todas formas, creo que no has visto lo extraño. Los map_get_pixel funcionan fetén. Te lo marcaré:
Línea que funciona
Quoteif(!collision(type objetos) &&  !collision(type objetos) &&  map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,0,0) && map_get_pixel(fpgs[2],1,x,y+13)!=map_get_pixel(fpgs[0],6,5,0))
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Rein (K´)ah Al-Ghul

revisate las prioridades de los operadores ??

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Yawin

Pero, porqué tengo que ponerlo dos veces??
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Drumpi

Porque la segunda comprobación de colisión te da otro proceso distinto que no colisiona, o te devuelve directamente cero porque no hay más procesos de ese tipo que colisionen.

En estos casos recomiendo usar SAY antes del IF para ver si el resto de los valores son correctos: en este caso, ver los colores que devuelve de cada mapa, y si coinciden o no.
También comprobar si se cargaron los mapas y, por supuesto, si tienen la misma profundidad de color (256 colores o 16 bits).
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)