Question: How do you make a character move in GameMaker?


In GameMaker, moving a character typically involves changing their x and y coordinates on the screen. Here's a step-by-step guide to making a basic character movement system:

Step 1: Create the Character Object

  • In your GameMaker project, create a new object (e.g., obj_player).

Step 2: Set Up Movement Variables

  • In the Create Event of obj_player, initialize your movement variables.
// Create Event of obj_player speed = 4; // The speed at which the character will move.

Step 3: Write the Movement Code

  • In the Step Event of obj_player, write the code to change the position based on player input.
// Step Event of obj_player // Horizontal movement if (keyboard_check(vk_left)) { x -= speed; } if (keyboard_check(vk_right)) { x += speed; } // Vertical movement if (keyboard_check(vk_up)) { y -= speed; } if (keyboard_check(vk_down)) { y += speed; }

Step 4: Add Sprites and Collision (Optional)

  • Assign sprites to your obj_player to visually represent the character.
  • If necessary, add collision detection to prevent the character from moving through solid objects.

Step 5: Test Your Game

  • Place obj_player in a room and run your game to test the movement.

This is a very basic example of character movement. Depending on your needs, you might want to implement acceleration, friction, or more complex mechanics like jumping or pathfinding. Also, consider using keyboard_check_pressed for one-time key presses and keyboard_check_released when you want an action to occur after releasing a key.

For diagonal movement speed consistency (to avoid faster movement diagonally), you may want to normalize the speed:

var move_x = keyboard_check(vk_right) - keyboard_check(vk_left); var move_y = keyboard_check(vk_down) - keyboard_check(vk_up); // Normalize vector if both components are non-zero if (move_x != 0 && move_y != 0) { var len = sqrt(move_x * move_x + move_y * move_y); move_x /= len; move_y /= len; } x += move_x * speed; y += move_y * speed;

Using this normalization ensures that the character moves at the same speed in all directions.

Additionally, as your game development progresses, you may want to look into finite state machines (FSM) for more complex character behaviors and better code structure and organization.

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.