Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: pucara en Enero 15, 2013, 05:04:05 PM

Título: Espejar Sprite
Publicado por: pucara en Enero 15, 2013, 05:04:05 PM
Hola nuevamente comunidad, como ya algunos saben, en cualquier momento libero mi último juego, el cual será posteado en breves en la sección correspondiente, pero para ello me falta un par de detalles:

Necesito saber si se puede espejar el gráfico de un sprite en tiempo de ejecución por ejemplo una persona mirando a la derecha, que al espejarlo, la misma figura quede mirando al lado contrario, sólo para no cargar dos veces el mismo recurso.

También me he fijado que en el gm7 se pueden cargar "extension packages" quisiera saber cómo se usan, ya que teóricamente ya están cargados en el programa y quiero usar el de transiciones entre rooms.

Bueno, espero  sus respuestas y poder agradecérselo con varias horas de diversión (me refiero a mis juegos..  >:( )

Saludos  y gracias de antemano por su ayuda 8)
Título: Re:Espejar Sprite
Publicado por: calio en Enero 15, 2013, 05:18:13 PM
Con la segunda duda no se si pueda ayudarte; nunca he ocupado ninguna extensión ._. los dramas de haber saltado de Game Maker 6 en Windows a Game Maker 7 en un Mac con un hiato de años entre medio xD Y el hecho de que la mayoría de las extensiones sean incompatibles con Mac no ayuda en nada :3

Pero con la primera claro que te puedo ayudar :) existen dos variables que controlan el scaling del sprite directamente en Game Maker. Estas son image_xscale e image_yscale.

Por defecto, éstas variables llevan por valor 1, lo que significa que el sprite está en proporción 1:1, o dicho de otro modo, x1.00.
Como te imaginarás, aumentar el valor de éstas variables hace que el sprite se vaya agrandando, por lo que darle un valor de 2 a ambas hará que el sprite esté en proporción 2:1 / x2.00 y se vea al doble de su tamaño original, así sucesivamente.

Ahora, el momento en que ésta función comienza a responder tu duda es cuando se hace escalado negativo :)

Al escalar negativamente un sprite, éste se voltea y se espeja, por lo que darle un valor de -1 a cualquiera de las variables hace que éste se voltee con respecto al eje que cada una maneja.

Dado que lo que necesitas es hacer el espejado en horizontal, necesitas modificar el escalado del sprite para que image_xscale sea equivalente a 1 cuando vaya a la derecha y -1 cuando vaya a la izquierda. ¿Por qué no al revés? Pues porque la numeración de la variable X va subiendo hacia la derecha y disminuyendo hacia la izquierda en Game Maker, y una hspeed positiva moverá el objeto a la derecha y una negativa a la izquierda. De hacerlo así te será más fácil utilizar cualquier variable como referencia.

Dos cosas a considerar:
Título: Re:Espejar Sprite
Publicado por: pucara en Enero 15, 2013, 08:27:38 PM
Muchas gracias Calio, lo voy a probar ahora mismo y te cuento.

Un aplauso al muchacho, que además sabe resumir  8)