Preparar el estado de ataque en GameMaker

Resumen

Configurar el estado de ataque de un personaje en GameMaker Studio implica preparar el sprite, ajustar los controles y conectar la lógica con el flujo de estados existente. Si estás dando tus primeros pasos en desarrollo de videojuegos 2D, aquí verás cómo dejar listo el terreno antes de meterle mano al código más complejo.

¿Cómo importar el sprite de ataque del personaje?

El primer paso es darle vida visual al ataque. Vas a crear un sprite nuevo y nombrarlo sprBatmanAttacking, siguiendo la convención que ya usaste con running. Esa coherencia te va a salvar cuando el proyecto crezca.

Entra a editar imagen e importa el strip desde la carpeta main char. Las medidas son 87 por 83 píxeles, con 10 frames. Asegúrate de que el offset esté en cero antes de convertir.

  • Tamaño del frame: 87x83 píxeles.
  • Cantidad de frames: 10.
  • Velocidad recomendada: alrededor de 12 para que la animación no se vea acelerada.

Una vez convertido, ajusta la velocidad de animación. Aquí entra el criterio de diseño: lo que se sienta natural para tu personaje es lo correcto. Esa es la parte divertida de hacer videojuegos, ajustar hasta que se sienta bien [01:08].

¿Por qué centrar el punto de anclaje del sprite?

Por defecto, GameMaker coloca el punto de anclaje en la esquina superior izquierda. Cuando cambias entre sprites de distintos tamaños, el personaje aparece dando saltos extraños en pantalla.

La solución es ponerlo en middle center. Con eso, todas las animaciones comparten el mismo centro y la transición entre idle, run y attack se ve fluida [07:52].

¿Qué es el origin o punto de anclaje en GameMaker? Es el punto de referencia desde donde se dibuja y posiciona el sprite. Si está mal configurado, el personaje parece teletransportarse al cambiar de animación.

¿Cómo crear el script del estado de ataque?

Con el sprite listo, toca crear un script nuevo llamado state_attack. Por ahora solo necesita una línea: asignar sprite_index al sprite sprBatmanAttacking.

Esa simplicidad es intencional. En esta etapa solo estás conectando el visual con el estado. La lógica de daño, hitboxes y temporizadores viene en la siguiente sesión [03:15].

¿Cómo cambiar los controles a WASD y agregar el botón de ataque?

Mover al personaje con flechas y atacar con la mano izquierda resulta incómodo. Por eso conviene migrar a la configuración estándar de muchos videojuegos: WASD para moverse y J para atacar.

Dentro del script get_input vas a usar la función ord combinada con keyboard_check. La función ord recibe entre comillas la tecla que quieras mapear.

  • Derecha: ord("D").
  • Izquierda: ord("A").
  • Arriba: ord("W").
  • Abajo: ord("S").
  • Ataque: ord("J") asignado a la variable attack.

¿Qué hace la función ord en GameMaker? Convierte un carácter en su código numérico para que keyboard_check pueda detectar la tecla. Es la forma estándar de mapear letras como controles.

¿Qué significan las marcas rojas en el editor de código?

Mientras escribes, GameMaker analiza tu sintaxis en tiempo real. Si algo está mal, marca la línea en rojo antes de que intentes compilar. En el ejemplo de la clase, faltaba cerrar un paréntesis tanto en ord como en keyboard_check [05:30].

Cuando veas esa alerta roja, revisa la línea con calma. Casi siempre es un paréntesis, una llave o un punto y coma faltante. Atender estos avisos te ahorra horas de debugging.

¿Cómo conectar el ataque con el flujo de estados del personaje?

En el objeto obj_player ya tenías una condición que enviaba al state_move cuando se presionaba alguna dirección. Ahora hay que extender esa lógica con un else if para el ataque y un else final para el idle.

El flujo queda así:

  1. Si presionas WASD, el personaje entra al state_move.
  2. Si presionas J, entra al state_attack.
  3. Si no presionas nada, regresa al state_idle.

Esta estructura de condicionales encadenados es la base de una máquina de estados simple, un patrón clásico para controlar el comportamiento de personajes en videojuegos. Cada estado se encarga de una sola responsabilidad y las transiciones se gestionan desde un punto central.

Al correr el juego con F5, verás que al mantener J presionada el personaje ataca sin importar dónde esté en el escenario. Ese es el comportamiento esperado para esta etapa.

En la próxima sesión vas a organizar mejor el ataque y construir un diagrama de flujo que te permita visualizar cómo se relacionan todos los estados de tu personaje. Si tienes dudas sobre la configuración de controles o la lógica de estados, déjalas en los comentarios.