GameMaker (all)

Top Down Movement & Collision

Pixelated Pope

You must be logged in to obtain assets


The perfect top down collision system!

  • Pixel Perfect collision!
  • Slide along 45° ramps of any size!
  • Supports 360 degree movement!
  • Supports Narrow Hallways
  • Move at virtually any speed
  • Movement and Collision 100% independent of controls!
  • One Script implementation!

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!

With a single script, you can move your character around your room with perfect world collision! All you need to do is provide a direction to move and a speed to move at and you are done!

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?


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

Still not convinced this is the system for your game? Watch the YouTube tutorial in the listing. I give a detailed step by step tutorial for implementing the system into a new project.

Or try the demo available here:

(Please let me know if the demo link breaks. Drop box can be silly).

End User Licence Agreement (EULA).

Age Rating: None


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 1.0.6. Published July 19, 2018

Fixed stupid typo.

Loading, please wait

Package contents

Loading, please wait

What is the issue?

Loading, please wait