Verán, estoy desarrollando un efecto en el cual si un objeto colisiona con un charco se muestre un reflejo, para lo cual uso la función "draw_sprite_part_ext", pero están surgiendo unos bugs que me desconciertan.
Adjunto un exportable y unas fotos con los errores, a ver que me sucede.

#1 Octubre 12, 2015, 03:33:43 AM Ultima modificación: Octubre 12, 2015, 03:37:02 AM por penumbra
Desconozco cómo sea tu juego, pero por ejemplo, hay plataformeros (muchos) donde el jugador no entra directamente en contacto con el charco y de todas formas el charco/agua refleja su sprite (al menos parcialmente), de hecho este comportamiento se me hace más natural que activar un reflejo sólo cuando el jugador contacta con el objeto

Según el código que estás usando, activaste la inversión en el eje Y, entonces creo que se trata de un plataformero con vista lateral, pero si es así y se mantiene la lógica de que para activar el reflejo se necesita contactar con el objeto charco, suponiendo que la parte más baja del sprite del jugador quede 1 pixel por encima del charco, no habría colisión, y no se reflejaría nada, pero al estar tan cerca el jugador del charco y considerando que es vista lateral, debería verse su reflejo en el charco, por eso no entiendo que idea quieres implementar exactamente. También se me hace confuso que no haya suelo y que el jugador pueda contacar al charco desde cualquier dirección, entonces no sé qué dirección debería tener el reflejo y si pudiera tratarse de una vista que no sea lateral



Posteriormente aplicare un truco para que se vea el charco más abajo de donde esta realmente para así hacer el efecto de el personaje reflejándose en un charco, aunque por ahora no lo he aplicado.
La cuestión es que un extraño bug hace que se muestre partes de otros sprites. Tengo 3 sprites: el del jugador, el del charco y un tercero colocado entre ambos sprites que no tiene ninguna utilidad. Al posicionar al jugador en algunas partes se muestre trozos de sprites que no deberían salir, mostrándose incluso ese sprite central que no utilizo en el juego.

Se que estos efectos se logran bien con un recurso llamado SHADERS. He encontrado ejemplos de reflejos de agua con distorsión, el asunto es que son códigos mucho más complejos. Pero encontré un código que no usa shaders y es muy sencillo y hace una reflexión sobre agua simple.
Al ejecutar el juego puedes mover el personaje con las flechas (teclas de dirección) y hasta hacerlo saltar (con flecha arriba)

El código se encuentra dentro del objeto obj_water

#4 Octubre 12, 2015, 04:19:00 PM Ultima modificación: Octubre 12, 2015, 04:22:15 PM por fasst007
También te paso los proyectos usando Shaders.

1) Wave.gmz
2) #17 Demo - 2D Water YOYOgames ripped.gmz

En el proyecto llamado "#17 Demo - 2D Water YOYOgames ripped.gmz" debes mover el mouse para abajo o para arriba para bajar o subir el nivel del agua respectivamente.


Vale, ya los he visto.
De todos estos, el primero sin shader era el que buscaba, pero tenían una trampa obvia: nunca pasaba el personaje a un sitio donde el agua no pudiera reflejar. Claramente eso no me sirve de nada. XD