Document stub.png This article or section may not have content matching Scratch Wiki editing standards. Please improve it according to Scratch Wiki:Guidelines and Scratch Wiki:Editing Conventions. (May 2018)
Reason: Grammar and unnecessary contractions

A platformer is a simulation of actual physics that take place in real life. Objects fall, move, slide, jump, and bounce, and a platformer associates those properties into a game in which one controls a character to typically move toward some form of a goal.

Creating the Platformer Sprite

The platformer sprite is the avatar controlled by the player. Its appearance can affect gameplay slightly, depending on the angles and size of its costume(s). For example, a character saved from a deadly fall because the brim of her hat snagged on a ledge may lessen the realism of a game. Sprites which are animated by dint of costume changes can be even more tricky.

Below is an example of a simple script for a platformer sprite. It uses two variables:

  1. "X velocity" stores a value representing the sprite's horizontal speed. It was set as a local variable by checking the option "For this sprite only" in the creation dialog. This means (i) the variable can only be changed by scripts in the same sprite, (ii) the variable name does not needlessly clutter the variable pane of other sprites, and (iii) the same variable name may be used in other sprites without causing conflicts.
  2. "Gravity" stores a value reflecting the strength of the sprite's tendency to fall. In this example it is set as a negative number because moving a sprite downwards requires making the value of its Y position smaller. "Gravity" need not be set as a local variable; a realistic game would subject all its characters to the same gravitational force.[1]
when green flag clicked
set [Gravity v] to [-5]
   if <key [left arrow v] pressed?> then// Using "else" saves processing later If's unnecessarily.
     set [X velocity v] to [-4]
     if <key [right arrow v] pressed?> then
       set [X velocity v] to [4]
       set [X velocity v] to [0] //No arrow keys means no movement.
  if <not <touching [Ground Sprite v] ?>> then //Sprite falls till touching ground.
     change y by (Gravity)
  change x by (X velocity)

Making Levels

Colors can be used in a platform for detection of the end of a level or an object which sends one back to the beginning of the level. For this tutorial, assume the following:

  • The character sprite performing the physics is named "Player"
  • Black is the color of the platform, or ground and walls, in which the character cannot pass through
  • Red is the color that sends one back to the beginning of the level he or she is on
  • Yellow is the color which must be reached to move on to the next level
  • Backgrounds are used as levels instead of sprites
  • Scrolling is not incorporated


The shapes do not need to be geometric, but can be organic, meaning an unordinary, inconsistent structure. There can be curvature to the various colors and platforms, which can be used to create diverse, numerous levels. The following image displays an example of some organic shapes being used:

Alt Level.png

When the levels are designed as backdrops in the Stage, add the following script to the "Player" sprite:

when gf clicked
if <touching color [#FF0000]?> then //if in contact with the color red
go to x:(-180) y:(-47) //relocate to the start
if <touching color [#FFFF00]?> then //if at the end of a level
go to x:(-180) y:(-47) //relocate to the start
switch backdrop to [next backdrop v] //next level

The scripts within the "forever" loop can be merged with the larger physics script shown farther above. Merging the scripts reduces the amount of conditions being checked at once and can possibly make the project more uniform and orderly, meaning the "Player" makes each movement and then checks for the conditions instead of the conditions possibly being checked during the sprite's movement.

Warning Note: A condition is a statement that is checked for a true/false response. In the example above, when the sprite checks if it's touching a color, it's checking a condition.

Then add the following script to any sprite:

when gf clicked
switch backdrop to [Level 1 v] //begin with the first level

Lastly, add the following script to the "Player" sprite:

when gf clicked
wait until <([backdrop # v] of [Stage v]) = (amount of backdrops)> //wait until the last level is reached
stop [all v]

Making the Win Background

Last of all, comes the win background. After finishing all the levels in the platformer, something would come up that says something like "You Win!". Put it as the last costume in the sprite/background. It can be some text in a basic white background saying "You win" or the art can be complex.

See also

External Links