The system I created includes a wide range of customizable features, including the following which are available through the in-engine menu:
• Compatibility with 2D top-down, 2D sidescrolling, and 3D perspectives
• The ability to define input, and the direction in which the input moves the player, for compatibility with both normal and isometric perspectives, and with both a keyboard and joystick
• Variables to define speed, jump height, the the time it takes to accelerate or decelerate
• Custom curves to define the way in which the player accelerates, for both motion and rotation
• A gravity system which allows users to define a custom gravity direction and change it on the fly, for various applications including both gravity that acts in a constant direction and gravity that attracts towards a specified point
• Highly customizable jumping, including the following optional features: Jumps which apply a different fall speed compared to the initial jump speed for a weightier game feel, coyote time and jump buffering for more responsive controls, variable jump height depending on how long the jump button was pressed, double-jumping or other forms of multiple jumps in mid-air, jump boosts that apply after a certain number of consecutive jumps in short succession, boosts to horizontal speed during jumps, and wall jumping
• A flexible rotation system that can rotate a game object, including the player, about a specified axis based on inputs, or to turn towards a specified point