Controls

A, D, Space, and Shift 

You can run, jump, dash, double jump, wall slide, and wall jump.

What is This?

This is a flexible, and easy to implement platformer template, that gives you all the tools to make your own platformer game.

Features

  • Coyote Time, add a window of time where you can still jump if you click the jump button in the air.
  • Jump Buffer, add a window of time where you can still jump if you run off a platform.
  • Variable Jump Height,  if your characcter lets go of the jump button mid air they will start falling
  • Configurable Jump Heights, no more tinkering with jump power, and gravity values!
  • Acceleration, and Decceleration, make your characters feel more human
  • Air Friction, make your characters feel less floaty.
  • In code squash and stretch animations, to add punch to your animations
  • Made with a finite state machine (which you can find here)


Art assets can be found here 

StatusReleased
CategoryAssets
Rating
Rated 5.0 out of 5 stars
(3 total ratings)
AuthorSaif Amer
GenrePlatformer
Made withGodot
TagsGodot, Project template

Download

Download NowName your own price

Click download now to get access to the following files:

PlatformerTemplate(v2).zip 98 kB

Comments

Log in with itch.io to leave a comment.

Hey, this was really great. But it doesn't work in godot 4. Can you update it so it works in godot 4 as well?

Thank you for this awesome asset btw it has helped me so much in learning.

(1 edit)

Thanks for this! It has saved me sooo much time, and tought me tons along the way!

You can download my game mechanic demo here: 

https://silentshadow51.itch.io/a-kingdom-worth-saving


thanks again!

(1 edit)

Works with Godot 4.2?

Edit: 4.2 gives this error: res://Scripts/Player.gd:9 - Parse Error: Unexpected "Identifier" in class body.

for:

onready var PlayerSprite = $Sprite #path to the player's sprite

onready var Anim = $AnimationPlayer #path to animation player

onready var RightRaycast = $RightRaycast #path to the right raycast

onready var LeftRaycast = $LeftRaycast  #path to the left raycast

In Godot 4, onready var is declared @onready var

hi do you perhaps have a discord or something that i can contact you? i would love to ask a lot of things since i use a state machine for my platformer

Nice template!
I just noticed that when you press jump and release the button before you land on the ground, you still jump high and the velocity doesn't get divided by 2. Haven't found a solution to that yet.. Just wanted to let you know, nice template anyways :) 

This is so amazing, thank you.

(-1)

how do i do the camera?

(+1)

i was struggling to do a good platformer movement this will really help me . Thanks !

(+1)

how can I add new states like an attack state, im a little lost

(1 edit)

Yup, to add new states you just need to create functions for the enter, exit, and step logic an example for an attack state would be 

func attack_emter_logic():

     pass

func attack_logic():

     pass

func attack_exit_logic():

     pass

Hi, one question for the airFriction. If i increase the number or lover the number nothing changes. How could i change the air movement speed of the player? Thank you in advance. 

Holy, your completely right I cant believe I didn't catch that. I've updated the files in the GitHub and itch, but if you don't wanna go through the hassle of re downloading it just swap out this line in the move horizontally function:

"currentSpeed = move_toward(currentSpeed, maxSpeed , acceleration"

to this

"currentSpeed = move_toward(currentSpeed, maxSpeed - airFriction, acceleration)"

can I use animated sprites instead of the animation player?

Im sure you can, but I'm not really experienced in using the animated sprite node

(+1)

I finally had time to actually try this one

My goodness, I like how clean and easy to understand AND extend this template

I added sprinting, then extended double jumps to allow multiple jumps but with a limit. Actually finishing on time for game jams is gonna be cinch... if I stop procrastinating, just maybe. Cries in a corner. 

(+1)

You are a fucking god my man, I am so sick of creating basic state machines and player controllers at the start of every game prototype <3

(+1)

I cannot download the asset--- when I click "Download Now" it opens this same page in a new tab.

If your your having trouble downloading the template from itch you could try the github https://github.com/mightyminebuster/Godot-Platformer-Template

Thank you!!

(1 edit) (+1)

This is very nice of you to do, keep up the good work! Also is there a way to make the character squash when falling down?

Thank you so much for your kind words. The character already does squash on landing by calling the squash_stretch() function in the fall state when checking if you are on the floor. You can change the amount it squashes, and stretches by changing the landingSquash, and landingStretch vars

oh ok, I get it now thankyou for your respond!

(2 edits) (+1)

hi how do i add a new sprite sheet (nice template i really like it)

To change the sprites on the player first you need to go to the player.tscn file, then click on the sprite node, and change the texture property. 

Next you need to adjust the hframes, and vframes values to the amount of rows and columns your sprite sheet has. 

Lastly you need to click on the AnimationPlayer node and remake the animations to fit how many frames your spritesheet has.

This video goes over the whole process: 

(+1)

I cant run the code, the error I'm given is that it can't find the function move_towards. Am i missing something?

What version of Godot are you using?

(+2)

Ah, I was using 3.1, it fixed itself once i tried running it in 3.2!