Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Yawin on August 25, 2011, 04:23:18 PM

Title: Problema ultraextraño con collision
Post by: Yawin on August 25, 2011, 04:23:18 PM
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é?
Title: Re: Problema ultraextraño con collision
Post by: Outlaw on August 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)
Title: Re: Problema ultraextraño con collision
Post by: Yawin on August 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
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))
Title: Re: Problema ultraextraño con collision
Post by: Rein (K´)ah Al-Ghul on August 25, 2011, 06:47:08 PM
revisate las prioridades de los operadores ??
Title: Re: Problema ultraextraño con collision
Post by: Yawin on August 25, 2011, 06:51:21 PM
Pero, porqué tengo que ponerlo dos veces??
Title: Re: Problema ultraextraño con collision
Post by: Drumpi on August 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).