For my last game Multi I implemented a system which allowed for my game character to walk on and jump from walls based on collision handling from an article in the SoulHow Assistance Guides. I thought I’d share that Wall Walking System with you.
You have familiarity with writing code in Game Maker.
You have a basic understanding of writing simple physics code in Game Maker.
Your environments gravity pull objects downwards.
That you have handled cases where your character can move on horizontal surfaces
The following Wall Walking System allows a character to walk in a variety of different situations that I’ll illustrate and refer to using the following diagram.
On completing this short guide your should have a better idea on how to have your character walk in the following cases:
Green Case – Left, Right on Horizontal Surfaces
Blue Case – Up and Down Completely Vertical Left Walls
Red Case – Up and Down Completely Vertical Right Walls
Purple Case – Left and Right on Vertical Ceiling Walls
In addition your character will also be able to jump up, down, right and left in the Green, Purple, Blue, and RedCases respectively.
A caveat of this Wall Walking System is that it will not work in the corner cases highlighted by the orange lines due to not specifically handling the effect of the assumed environments gravity. Now on to the system!
When searching for a teleport system in Game Maker, I often find the following suggestion. When object A collides with object B at position (x,y) change object A’s position to (x_new,y_new). This works perfectly if you require a fixed position teleport system.
Though, what if you wanted (given any character position) to be able to teleport to a location that is not pre-defined. A dynamic teleport. What do you do? I asked myself this, and here’s a simple solution that I used for my puzzle platformer Multi.
First lets define a few terms and variables:
Ideal Teleport – A teleport which results in the character being where you most want in a regular scenario.
Teleport – A boolean variable that determines whether the character can teleport or not. It is reset with the use of an alarm.
Teledist – A fixed integer that determines the position change of the ideal teleport. I used the value 96 pixels.
Par_solid – The fundamental solid object of my game (I did not use Game Makers solid variable, this article explain why.
It also helps to know the basics of Game Maker Language’s (GML), and how one of its functions place_meeting works. If not I suggest you check out this great post in the Game Maker forums by Torigara.