This started as a weekend project, but I had too much fun with it!
Features:
I've always adored the movement systems present in Source engine games, and wanted to try to replicate it with my own spin. The main goal was to give the player both complete control over their movement, as well as a proper sense of momentum and pseudo-physics. I used Unity's character controller component to give me absolute control over the player's movement while also letting me take advantage of features such as the step-offset.
One of the drawbacks of the character controller based approach is the lack of dynamic physics provided by Rigidbody controllers. For instance, if you wanted to have an explosion knockback a rigidbody character, assuming it's designed properly, you could just use Rigidbody.AddForce(). This is something I wanted to maintain with my system, so I added a 'AddImpulseForce()' function to the controller script, which appends the velocity given to the player's velocity at the end of the next physics update, giving the desired effect. This is even used within the script for jumping and mantling.
As you can see in the above gif, there is a stamina system which is enabled by default. Stamina is required to sprint, and sprinting is required to perform the parkour moves. Players regain stamina with every walljump and mantle, and only lose stamina when sprinting on flat ground. This encourages players to chain together different moves to maximise their sprint time, but of course if it fits your game better it can be disabled.
Inspector Values
Customisability was something I wanted to make a priority with this asset, so every physics and control option is exposed to the inspector under the appropriate header and with tooltips to explain what each value is for from the editor. As a dev using this asset you have absolute control over your player's movement.
Get it
The asset is currently undergoing pending review for release on the Unity asset store, where it will be available for $20.
peterkirkcaldy@gmail.com