GameMaker (all)

Top Down Movement & Collision

Pixelated Pope

You must be logged in to obtain assets


End of Support Announcement (Oct 2nd, 2023) As I've been taking a step back from Game Dev over the course of the last year, I've finally decided it's time to cease formal updates on my assets. They will now be free to use, but will receive no further features, bug fixes, or any changes at all. Enjoy them for as long as they continue to work in GM, and thanks for all the support over the years.

Check out the in browser demo

The versatile and easy to use top down collision system!

  • Easy to use
  • Move any direction at any speed
  • Control motion with Speed and Direction or X Speed and Y Speed
  • Flexible system supports object collisions, tile collisions, and more
  • Configure objects to slide around corners
  • Always whole number coordinates for objects
  • Never get stuck in a wall
  • Directional collision reporting


Are you working on a top down game? Something like Binding of Isaac, Zelda, or Secret of Mana? Do you want your character to slide along ramps and walls smoothly. Do you want to use ANY movement speed; From 1, to 2.45, to 18, and even higher? Do you want to use the same collision code for all characters (players, enemies, npcs, bosses)? This is the system for you!

After a bit of simple setup, you can move your character around your room with perfect world collision! Provide a direction to move in and a speed to move at and your object will move, collide, and slide!

The system is completely independent of controls! If you are new to game maker or have done any research into basic collision detection, maybe this code looks familiar to you?

 if(keyboard_check(vk_right) && !place_meeting(x+1,y,obj_wall));

When you bind your world collision to your controls, you are very limited in what you can do. What if you want to knock your player back from taking damage? Now you have to write new collision code to handle moving without pressing any buttons!


How about this?

move.spdDir(maxSpeed, moveDir)

Call that in your step event and your player will move and collide flawlessly!

Still not convinced this is the system for your game?
Try the Demo right in your browser here

Check out the documentation for a quick start guide.

Need help understanding how to use tile collisions? Check out the basic process detailed here

End User Licence Agreement (EULA).

Age Rating: 4+


GMS1 - Version 1.0.3. Published August 23, 2016

Added a fix that created odd behavior when a move speed not equal to zero was passed to the script with a -1 direction. In either case (0 for speed, -1 for direction) the script should simply make sure we aren't currently stuck in a wall and then break out. It now does that.

GMS2 - Version 2.0.24. Published May 26, 2020

Massive Overhaul -Updated Script allows better support for all angles and shapes of collisions -Updated example project showcases basic movement, momentum based movement, and analog controls.

GMS2.3 - Version 3.0.1. Published July 22, 2022

Fixed issue with moving diagonally through a gap that is just barely too small freezing the game

Loading, please wait

Package contents

Loading, please wait

What is the issue?

Loading, please wait