Autor Tema: Problema ultraextraño con collision  (Leído 1042 veces)

Yawin

  • Hero Member
  • *****
  • Mensajes: 1088
  • Karma: 44
  • La primera persona que ha "demosceneado" en Bennu.
Problema ultraextraño con collision
« en: Agosto 25, 2011, 04:23:18 pm »
Os explico. Esta línea no me funciona:
Código: [Seleccionar]
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í:
Código: [Seleccionar]
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é?
« última modificación: Agosto 25, 2011, 04:47:49 pm por yawin »
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

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

Outlaw

  • Sr. Member
  • ****
  • Mensajes: 464
  • Karma: 9
Re: Problema ultraextraño con collision
« Respuesta #1 en: Agosto 25, 2011, 04:35:08 pm »
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)
« última modificación: Agosto 25, 2011, 04:37:01 pm por Outlaw »
"Life is cheap when the bounty is high"

Yawin

  • Hero Member
  • *****
  • Mensajes: 1088
  • Karma: 44
  • La primera persona que ha "demosceneado" en Bennu.
Re: Problema ultraextraño con collision
« Respuesta #2 en: Agosto 25, 2011, 04:46:01 pm »
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
Citar
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))
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

  • Hero Member
  • *****
  • Mensajes: 657
  • Karma: 8
Re: Problema ultraextraño con collision
« Respuesta #3 en: Agosto 25, 2011, 06:47:08 pm »
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

  • Hero Member
  • *****
  • Mensajes: 1088
  • Karma: 44
  • La primera persona que ha "demosceneado" en Bennu.
Re: Problema ultraextraño con collision
« Respuesta #4 en: Agosto 25, 2011, 06:51:21 pm »
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

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re: Problema ultraextraño con collision
« Respuesta #5 en: Agosto 27, 2011, 03:47:42 pm »
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)