Distorsionar sprites

-Autor: Mega-G
-Explicación: Distorsiona el sprite_index de un objeto de forma sinusoidal. Recorta el sprite en forma de "tiras" horizontales y las mueve individualmente creando así un efecto de distorsión.

Aquí una muestra de cómo se ve:


-Versiones: GM7, GM8 y GMStudio

-Scripts:


distorsionar(amplitud,b)

amplitud es valor de la distancia máxima de una "tira" respecto a su posición inicial.
b es una constante que he utilizado para regular la forma de las ondas. En el ejemplo su valor es 10.


Este script irá en el evento <Draw>:


amplitud=argument0
b=argument1
for(i=0; i<=sprite_height; i=i+1)
{
draw_sprite_part(sprite_index,0,0,i,sprite_width,1,x+sin((angulo+i)/b)*amplitud,y+i)
}
angulo+=2


Y para que funcione tendrás que definir la variable angulo en el evento <Create>. Puedes ponerle el valor que quieras, es el ángulo inicial (en radianes).



El ejemplo del vídeo lo podéis descargar aquí: http://guinxu.com/downtut.php?link=18.
(Aunque no está en forma de script, lo he puesto directamente en el evento <Draw>).
Es un editable de GM7 pero lo podéis importar a GM8 y GMStudio sin problemas, lo he comprobado y todo es compatible.


Como siempre mis ejemplos son libres para el que quiera utilizarlos.
Y os responderé las dudas/preguntas que tengáis si algo no ha quedado claro.


¡Saludos!

Buen efecto, y lo lograste con un programa extremadamente corto... es una obra de arte!

#2 Mayo 24, 2014, 02:34:18 PM Ultima modificación: Mayo 24, 2014, 02:37:08 PM por abramelin
ole! el autentico y genuino efecto wave. por fin. voy a intentar implementarlo a las pantallas de agua a ver como queda, que me quede con ganas de meter este efecto y lo tuve que hacer a lo cutre con el vegas.
gracias por compartir!!!

*el link me da error, me gustaria poder bajar el .gmk

Cita de: abramelin en Mayo 24, 2014, 02:34:18 PM
ole! el autentico y genuino efecto wave. por fin. voy a intentar implementarlo a las pantallas de agua a ver como queda, que me quede con ganas de meter este efecto y lo tuve que hacer a lo cutre con el vegas.
gracias por compartir!!!

*el link me da error, me gustaria poder bajar el .gmk

Qué raro, a mí no me da error. He probado descargarlo sin iniciar sesión en mi página y luego habiendo iniciado sesión y me funciona igual.
A lo mejor justo en el momento que lo has bajado ha habido un problema.

Un saludo y espero que puedas bajarlo ahora!

me sigue pasando  ??? me sale la paginas entera con simbolos,

'Õ�½��ñ��$   �� ��Y   ��­��ò��¾��'��a��$��W��;   ��¬��˜���' ��F���O���8����¢ ��x��B��ü��š��ù��{��ú���Î��þ��e��ˆ����Ï��³��ä
����ý��­��¼��ƒ����p��¤
��› ��§   ��¡��G��Œ��l����>��á��˜���O��œ   ��(���¬���"���0��˜��†��ó��¯���=��Ë���›��Ö��8��ñ���õ��z   ��'��¶��
��5����M   ��›��x��½   ����•   ��¼
��]   ��M
��È��} ��g��7��,��Ä��Û��,,��Ü��ª��d����±��©��M�� ��ä   ��ÿ��¿���›���_ ��0��Ï��2��‡��‰��Œ��M��
��X
��k��ï�� ��~��'   ��ž��"��«��º   ��V��‹
��É��F��Ó��.   ��÷�����u���ø�����¬ ��ê��ð��Å��}����ï��N��Â��#
��i ����ˆ��»   ��.��Ì��ú��'   ��X��S��ì��A��†��Í��#��,��t��«   ��&��
y asi toda la pagina

a que puede deberse esto? he permitido la pagina en no script por si acaso, pero me sigue saliendo eso. bastante raro si que es, ya que nunca me habia salido, si a los demas les va bien debe ser problema mio.
si lo pudieras subir por dropbox o adjunto de alguna forma seria la caña.

El navegador está abriendo el archivo directamente en lugar de descargarlo, deja que se termine de cargar y luego presiona ctrl + S para guardarlo a disco manualmente.

gracias killer me ha funcionado

#7 Mayo 24, 2014, 11:36:42 PM Ultima modificación: Mayo 24, 2014, 11:47:30 PM por Mega G
Para evitar que a más personas les pase como a abramelin voy a meter el ejemplo dentro de un zip para que lo descarguen bien.

Lo hago ahora y edito el mensaje para avisar de que ya está.

Disculpad las molestias, ahora mismo lo arreglo!

Edit: Ya está arreglado, todos los archivos son .zip

Te recomendaría usar la copia de surfaces en ves de dibujar partes de sprites que actuan como un sprite mismo


surface_copy_part(destination,x,y,source,xs,ys,ws,hs)

Cita de: TheSandBoxMKG en Septiembre 18, 2014, 11:25:16 PM
Te recomendaría usar la copia de surfaces en ves de dibujar partes de sprites que actuan como un sprite mismo


surface_copy_part(destination,x,y,source,xs,ys,ws,hs)

Gracias por el consejo, en cuanto pueda investigaré un poco y probaré tu código a ver qué tal va.
¡Saludos!