If you find this tutorial helpful, please consider showing support by trying my latest game
Insane Number Run
***
Accompanying video tutorial. Please watch at fullscreen with quality set to 480p or higher.
Note:
You can preview an implementation of grid based movement here
When you are finished, be sure to check out further lessons in this series for grid movement:
Part 2: Collision Detection
Part 3: Character Animation
And now to the lesson!
1) Start a new project
2) Add a new object and call it obj_player
3) Inside obj_player, Add Event -> Create
and add a piece of code
containing:
/* Initialize required variables */ gridSize = 32; // Should be power of 2 (...8,16,32...) isMoving = false; // Keeps track of when player is moving moveTimer = 0; // Counts down from grid size each step moveSpeed = 4; // Do not set higher than grid size! speedX = 0; speedY = 0;
4) Inside obj_player, Add Event -> Step
and add a piece of code
containing:
/*
When not moving, check to see if a direction key is held.
If so, assign x/y speed and change status to moving.
*/
if (isMoving == false)
{
if (keyboard_check(vk_right))
{
isMoving = true;
moveTimer = gridSize;
speedX = moveSpeed;
speedY = 0;
}
if (keyboard_check(vk_up))
{
isMoving = true;
moveTimer = gridSize;
speedX = 0;
speedY = -moveSpeed;
}
if (keyboard_check(vk_left))
{
isMoving = true;
moveTimer = gridSize;
speedX = -moveSpeed;
speedY = 0;
}
if (keyboard_check(vk_down))
{
isMoving = true;
moveTimer = gridSize;
speedX = 0;
speedY = moveSpeed;
}
}
/*
When moving, subtract from moveTimer our moveSpeed value
and update location relevant to set speeds.
Stop moving when moveTimer reaches zero.
*/
if (isMoving == true)
{
x += speedX;
y += speedY
moveTimer -= moveSpeed;
if (moveTimer == 0) isMoving = false;
}
5) Add obj_player to a room, preferably aligned to the grid size which you set in obj_player
There! You should now have a simple implementation of grid based movement. You can play around with changing gridSize to other values, such as 8 or 16 for tighter grid movement.
You can download the example gmk for this tutorial HERE
Incorporating what I discussed in my previous tutorial, you can also download a version which betters the 4 direction input HERE
Feel free to contact me about any questions or comments!

Pingback: [Game Maker] Grid Movement -PART 2- Collision Detection « 8-Bit Warrior
Pingback: [Game Maker] Grid Movement -PART 3- Character Animation « 8-Bit Warrior