Update 15 August 2019: Added experimental step offset functionality. (not in demos)
Based on Fragsurf by cr4yz (Jake E.), available here: https://github.com/AwesomeX/Fragsurf-Character-Controller/
Video demo: https://www.youtube.com/watch?v=w5BquYbCBAE
An adaptation of the Source engine's movement mechanics in Unity, including strafe jumping, surfing, bunnyhopping, swimming, crouching and jump-crouching (optional), as well as sliding (optional). The player can also push rigidbodies around.
If you want the player to collide with objects that are not on the default layer, you can set the layer mask in the SurfPhysics class.
You can use the included 'Example player prefab' as a base, or just add SurfCharacter to an empty object and do the looking/aiming system yourself.