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)

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:

  • Si vas a utilizar una expresión como image_xscale = sign(hspeed) o image_xscale = sign(x - xprevious) para hacer el espejado del sprite sin tener que manejarlo manualmente, ten en cuenta que en muchos de éstos casos esa expresión resulta en 0, y cuando el escalado de un sprite equivale a 0 éste, bueno, se ve en proporción 0:1 o x0.00, o lo que es lo mismo, no se ve :p
  • El escalado se hace utilizando como centro el punto de origen del sprite, por lo que si lo dejas tal cual viene por defecto, en 0,0, el sprite se va a escalar hacia la izquierda. Tu quieres que el sprite se escale desde el centro, así que considera cambiar el punto de origen del sprite si es que no quieres recurrir a una función draw_sprite_ext() para dibujar el sprite espejado en pantalla

Muchas gracias Calio, lo voy a probar ahora mismo y te cuento.

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