Gameplay Animation Showcase 1: Wallrunning
Wallrunning Showcase (Photosensitivity Warning)
My original intention for the wallrunning mechanic was to make something extremely versatile and flashy but still somewhat grounded in reality.
My biggest complaint with wallrunning in most games is weight, or rather the lack of it. Similar to swimming in most games, I think few games have approached it uniquely or in a way that makes the weight of your character on the wall feel fun.
Major Goals
- Created a wallrunning system that allows traversal of almost any angle without “latching” the player directly to a set plane or position.
- Created physically-driven states and control rig features so the player feels attached to the wall, while still working seamlessly with the 44 states and other miscellaneous features present in my game.
- An input/update system that allows the player to move upwards and downwards depending on the camera’s rotation relative to their current velocity on the wall.
Minor Goals
- A 3rd person camera that works inside both a vertical and horizontal tunnel without major clipping issues.
- A satisfying acceleration system that allows the players sprint speed (XY) to be influenced by the camera (AKA point to their next location)
- Seamless transition between the wall and floor when the floor angle change is smooth enough.
Animation
While the gameplay side took the bulk of the effort, the animation side has a relatively straightforward Pose setup.

I was able to reuse a lot from the locomotion while still giving what I feel is a convincing sense of weight. My whole Animation Blueprint for this project doesn't use Montages in any special way to offset the player, so having the pose be driven by an offset rotation of the root bone wasn't going to cause issues to any other states.
I don't believe this is the simplest way to achieve the result, but it was the easiest to test and influence other poses so I kept it.
Blendspace for Wallrunning (BS_4DWallrunSolver)
Wallrun Bone rotation depending on ZVelocity and Floor Angle
Lastly, I have the player's upperbody twist to face the direction the camera is pointed. I feel this helps show that he is attempting to go in that direction, even if his current velocity says otherwise.
Blendspace for Wallrunning (Leaning)
Player Character Blueprint
A lot of wallrunning systems I've seen use the function "Set Plane Constraint Normal" which restricts the player's movement enabling a different kind of movement. Working with it, I found it hard to write functions around it that promote the sense of weight I mentioned. I came up with an entirely new approach where the player's speed is manually influenced (so long as they are on a wall) every movement tick update.
This is done in a couple ways, but most importantly it means that if the player wants to move Up or Down they first need to deal with overcoming their negative or positive velocity.
Overcoming Gravity Example
Additionally, your XY velocity is directly increased by the negativity of your Z velocity. This means you can go quite fast when descending and then jump off the wall and maintain it all.
Player sprints downwards into a slide for a massive amount of speed!
The factor by which the velocity is influenced is determined by how harsh the camera is looking up or down. This took some time to get right, but it ensures that the player is always trying to travel the direction they are looking.


I think that with all this combined, it creates a complex yet predictable sense of weight and speed that feels good to the player.


Here is the full Update Wallrun Tick Event if you want to see it for yourself.
Thank you for reading. If you have any questions or need any tips on making your own systems, feel free to reach out to me on any of my socials!
Please look forward to next week's documentation.