Usando expresiones y variables

En muchas acciones necesitas especificar valores para los parámetros. En lugar de escribir un número, puedes poner una fórmula (ejemplo: 32*12). Pero también puedes proporcionar expresiones mucho más complicadas. Por ejemplo, si quieres doblar la velocidad horizontal, puedes poner 2*hspeed. En esta expresión hspeed es una variable que se refiere a la velocidad horizontal actual de la instancia. También hay otras variables que puedes usar, las más importantes son las siguientes:

x coordenada x de la instancia

y coordenada y de la instancia
hspeed velocidad horizontal (en píxeles por step)
vspeed velocidad vertical (en píxeles por step)
direction dirección actual en grados (de 0 a 360)
speed velocidad actual en esta dirección
visible si el objeto es visible (1) o no (0)
image_index esta variable indica qué subimagen del sprite se está dibujando. Si pones la variable image_speed a 0 puedes mostrar una imagen fija, parando la animación del sprite.
image_speed indica la velocidad con la que las subimágenes del sprite cambian durante la animación.
Por defecto vale 1. Si pones un valor mayor a 1 algunas subimágenes de la animación se saltan y de la impresión de que la animación va más rápido. Si lo haces menor que 1 las subimágenes se repiten y da la impresión de que la animación va más lenta.
score valor actual del score
lives número actual de vidas
health health actual (0-100)
mouse_x posición x del ratón
mouse_y posición y del ratón

Puedes cambiar casi todos estos valores usando la acción set variable. También puedes definir tus propias variables simplemente dándoles un valor (no uses la opción relative al hacer esto, pues todavía no existe esa variable). También puedes usarlas luego en expresiones. Las variables que creas son variables locales de la instancia, es decir, cada objeto tiene la suya propia distinta a la de los demás. Para crear una única variable para todos, pon global seguido de un punto delante del nombre de la variable.

También puedes acceder a las variables de los demás objetos poniendo el nombre del objeto, un punto y el nombre de la variable a la que quieres acceder. Por ejemplo, para mover una pelota al lugar donde hay una moneda puedes dar a la posición los valores (moneda.x , moneda.y). En caso de colisión, puedes acceder a las variables del otro objeto (el objeto contra el que estás chocando) usando other.nombre_de_la_variable. En expresiones condicionales puedes usar comparaciones como < (menor que), >, etc.

Por último, también puedes usar funciones. Por ejemplo, la función random(10) devuelve un número real menor que 10. Así, puedes hacer que la velocidad o la dirección tomen este valor. Existen muchas más funciones que se describen en la parte del manual dedicada al GML.