Saludos Makeros:
Sí, como pueden intuir por el título del tema tengo un problema y esta vez es uno grande... :'(
Realizando pruebas de dibujado sobre superficies me topé con cierto error que quisiera me aclararan. ???
Tengo tres "sprites" distintos (el mismo "sprite" pero rotado en 90 grados cada vez). Sus nombres son sp_1, sp_2 y sp_3 respectivamente. :)
Utilizando un "script" nombrado "sc_2" trabajo dichos "sprites" para modificarlos y crear nuevos "sprites" a partir de ellos. A dicho "script" lo llamo desde el evento "Create". :)
El algoritmo es sencillo: ;)
1. Dibujo el "sprite" "sp_1" en una superficie llamada "surf".
2. Luego, en dicha superficie, le dibujo encima el "sprite" "sp_2", pero en modo subtracción, o sea "draw_set_blend_mode(bm_subtract) ", para recortar la figura del "sprite" "sp_2" del cuerpo del "sprite" "sp_1".
3. Por último, en la misma superficie, dibujo encima el "sp_3" en modo substracción también para recortarle su figura de lo que haya quedado.
4. Lo que quede lo convierto en un "sprite" y lo guardo en la variable "sprite_1".
Debo obtener solo el área del "sp_1" que no coincida con las áreas de los "sprites" "sp_2" y "sp_3". 8)
El algoritmo no se detiene ahí: ;)
1. Dibujo el "sprite" "sp_2" en una superficie llamada "bar". Nótese que no es la misma superficie que la anterior.
2. Luego, en dicha superficie, le dibujo encima el sprite sp_3, pero en modo subtracción, o sea "draw_set_blend_mode(bm_subtract) ", para recortar la figura del "sprite" "sp_3" del cuerpo del "sprite" "sp_2".
3. Lo que quede lo convierto en un "sprite" y lo guardo en la variable "sprite_2".
En el evento "Draw" dibujo ambos nuevos "sprites", o sea "sprite_1" y "sprite_2" en áreas separadas para comprobar que quedaron como debe ser... :)
...pero mi sorpresa es tremenda al darme cuenta que no quedan como debieran. Dicho código no funciona en todas las computadoras de igual manera, los errores varían. :o
Utilizando el botón de la letra "R" se puede reiniciar el juego y comprobar como varía el dibujado. ???
Lo peor es que llega a mostrar partes de un "sprite" que nunca se le ordenó ser dibujado en dicha superficie como muestra la imagen. :-\
Por favor, ¿alguien podría decirme por qué el código no funciona bien? ???
¿Alguien tiene alguna solución para este problema? :'(
adjunto envío el editable en GM8.0 y una imagen con un error imposible ya que las superficies donde se dibujan son distintas... ???
Desde ya les doy las gracias por prestarme atención... ;D
Sí, como pueden intuir por el título del tema tengo un problema y esta vez es uno grande... :'(
Realizando pruebas de dibujado sobre superficies me topé con cierto error que quisiera me aclararan. ???
Tengo tres "sprites" distintos (el mismo "sprite" pero rotado en 90 grados cada vez). Sus nombres son sp_1, sp_2 y sp_3 respectivamente. :)
Utilizando un "script" nombrado "sc_2" trabajo dichos "sprites" para modificarlos y crear nuevos "sprites" a partir de ellos. A dicho "script" lo llamo desde el evento "Create". :)
El algoritmo es sencillo: ;)
1. Dibujo el "sprite" "sp_1" en una superficie llamada "surf".
2. Luego, en dicha superficie, le dibujo encima el "sprite" "sp_2", pero en modo subtracción, o sea "draw_set_blend_mode(bm_subtract) ", para recortar la figura del "sprite" "sp_2" del cuerpo del "sprite" "sp_1".
3. Por último, en la misma superficie, dibujo encima el "sp_3" en modo substracción también para recortarle su figura de lo que haya quedado.
4. Lo que quede lo convierto en un "sprite" y lo guardo en la variable "sprite_1".
Debo obtener solo el área del "sp_1" que no coincida con las áreas de los "sprites" "sp_2" y "sp_3". 8)
El algoritmo no se detiene ahí: ;)
1. Dibujo el "sprite" "sp_2" en una superficie llamada "bar". Nótese que no es la misma superficie que la anterior.
2. Luego, en dicha superficie, le dibujo encima el sprite sp_3, pero en modo subtracción, o sea "draw_set_blend_mode(bm_subtract) ", para recortar la figura del "sprite" "sp_3" del cuerpo del "sprite" "sp_2".
3. Lo que quede lo convierto en un "sprite" y lo guardo en la variable "sprite_2".
En el evento "Draw" dibujo ambos nuevos "sprites", o sea "sprite_1" y "sprite_2" en áreas separadas para comprobar que quedaron como debe ser... :)
...pero mi sorpresa es tremenda al darme cuenta que no quedan como debieran. Dicho código no funciona en todas las computadoras de igual manera, los errores varían. :o
Utilizando el botón de la letra "R" se puede reiniciar el juego y comprobar como varía el dibujado. ???
Lo peor es que llega a mostrar partes de un "sprite" que nunca se le ordenó ser dibujado en dicha superficie como muestra la imagen. :-\
Por favor, ¿alguien podría decirme por qué el código no funciona bien? ???
¿Alguien tiene alguna solución para este problema? :'(
adjunto envío el editable en GM8.0 y una imagen con un error imposible ya que las superficies donde se dibujan son distintas... ???
Desde ya les doy las gracias por prestarme atención... ;D