Meant for the Godot Game Engine 4.x.x, Open Source under MIT liscence.

Godot Asset Store Link

Github Repo 

CONTROLS

WASD or arrow keys for movement, Space to Jump

Hold Shift to Wall Latch if enabled

O to dash

S or Down + O to roll if enabled

I to run

INFO

Script with class is ready to go and available to download with the documentation at the bottom of the page. Documentation can also be read below. 

The Download is NOT downloading this whole demo, you are just downloading the documentation and "UltimateCharacterController.gd" script file.

 I'll do my best to keep is functioning and updated as soon as bugs .  You can report them by just leaving a comment on this itch page and I will get to it ASAP! I want this to be resource that new gamedevs and gamejammers can use to get a head start and lower the barrier to making games!

2D platformer art by Zeggy Games: 2D Pixel Art Character

Font by caffi_nate: Quaver

Tiles by JakeB: 16x Steel Tiles

Necessary Child Nodes

These nodes must be attached as a child of the CharacterBody2D node for it to function properly.

Max Speed (float)

The max speed your player will move.

Time to Reach Max Speed (float)

How fast your player will reach max speed from rest.

Time to Reach Zero Speed (float)

How fast your player will reach zero speed from max speed.

Directional Snap (bool)

If true, the player will instantly move and switch directions.

Running Modifier (bool)

If enabled, the default movement speed will by 1/2 of the maxSpeed and the player must hold a "run" button to accelerate to max speed. Assign "run" (case sensitive) in the project input settings.

Jump Height (float)

The peak height of your player's jump.

Jumps (int)

How many jumps your character can do before needing to touch the ground again. Giving more than 1 jump disables jump buffering and coyote time.

Gravity Scale (float)

The strength at which your character will be pulled to the ground.

Terminal Velocity (float)

The fastest your player can fall.

Descending Gravity Factor (float)

Your player will move this amount faster when falling providing a less floaty jump curve.

Short Hop AKA Variable Jump Height (bool)

Enabling this toggle makes it so that when the player releases the jump key while still ascending, their vertical velocity will cut in half, providing variable jump height.

Coyote Time (float)

How much extra time (in seconds) your player will be given to jump after falling off an edge. This is set to 0.2 seconds by default.

Jump Buffering (float)

The window of time (in seconds) that your player can press the jump button before hitting the ground and still have their input registered as a jump. This is set to 0.2 seconds by default.

Wall Jump (bool)

Allows your player to jump off of walls. Without a Wall Kick Angle, the player will be able to scale the wall.

Input Pause After Wall Jump (float)

How long the player's movement input will be ignored after wall jumping.

Wall Kick Angle (float)

The angle at which your player will jump away from the wall. 0 is straight away from the wall, 90 is straight up. Does not account for gravity

Wall Sliding (float)

The player's gravity will be divided by this number when touch a wall and descending. Set to 1 by default meaning no change will be made to the gravity and there is effectively no wall sliding. THIS IS OVERRIDDED BY WALL LATCH.

Wall Latching (bool)

If enabled, the player's gravity will be set to 0 when touching a wall and descending. THIS WILL OVERRIDE WALLSLIDING.

Wall Latching Modifier (bool)

Wall latching must be enabled for this to work. #If enabled, the player must hold down the "latch" key to wall latch. Assign "latch" in the project input settings. The player's input will be ignored when latching.

Dash Type (enum)

Types -

2 Way Horizontal

2 Way Vertical

4 Way Cardinal

8 Way Cardinal

The type of dashes the player can do.

Dashes (int)

How many dashes your player can do before needing to hit the ground.

Dash Cancel (bool)

If enabled, pressing the opposite direction of a dash, during a dash, will zero the player's velocity.

Dash Length (float)

How far the player will dash. One of the dashing toggles must be on for this to be used.

Corner Cutting (bool)

If the player's head is blocked by a jump but only by a little, the player will be nudged in the right direction and their jump will execute as intended. NEEDS RAYCASTS TO BE ATTACHED TO THE PLAYER NODE. AND ASSIGNED TO MOUNTING RAYCAST. DISTANCE OF MOUNTING DETERMINED BY PLACEMENT OF RAYCAST.

Correction Amount (float)

How many pixels the player will be pushed (per frame) if corner cutting is needed to correct a jump.

Left Raycast (Raycast2D)

Middle Raycast (Raycast2D)

Right Raycast (Raycast2D)

Raycast used for corner cutting calculations. ALL ARE NEEDED FOR IT TO WORK.

Crouch (bool)

Holding down will crouch the player. Crouching script may need to be changed depending on how your player's size proportions are. It is built for 32x player's sprites.

Can Roll (bool)

Holding down and pressing the input for "roll" will execute a roll if the player is grounded. Assign a "roll" input in project settings input.

Roll Length (float)

The length of the roll.

Ground Pound (bool)

If enabled, the player will stop all horizontal movement midair, wait (groundPoundPause) seconds, and then slam down into the ground when down is pressed. 

Ground Pound Pause (float)

The amount of time the player will hover in the air before completing a ground pound (in seconds).

Up to Cancel

If enabled, pressing up will end the ground pound early.

Animations (all bools)

run

jump

idle

walk

slide

latch

falling

crouch_idle

crouch_walk

roll 

Animations must be named "name" all lowercase as the check box says.

Looping Animations:

run, walk, idle, crouch_idle, crouch_walk

Non-looping Animations:

jump, slide, roll

Single Frame Sprites Frames:

latch, falling

Updated 4 days ago
Published 11 days ago
StatusReleased
CategoryTool
PlatformsHTML5
Rating
Rated 5.0 out of 5 stars
(3 total ratings)
AuthorNoasey
GenrePlatformer
Made withGodot
Tags2D, Character Customization, Controller, Game Design, Godot, Modular, Open Source, Project template, tool
Code licenseMIT License
Average sessionA few minutes

Download

Download
Ultimate 2D Platformer Controller v1.0.2.zip 42 kB

Install instructions

Simply place the script on a CharacterBody2D, set up the input in project settings, and attach the necessary child nodes.  Then just change the settings until you have your perfect player character!

Development log

Comments

Log in with itch.io to leave a comment.

(+1)

great work

(+1)

Looks really good. I’ll be having a play with this for my own games :) thank you very much

Thank you for checking it out!