Students give a sprite gravity (acceleration down), see that a fall speeds up and a throw rises, slows and comes back, and use gravity in a catching game.
Load these into Waypoints Prepare: choose Load URL and paste the copied address, or download the file and import it. In Prepare, the worksheet's Teacher edition shows the answers; the student copy hides them.
Predict and Run 7 min · Investigate 12 min · Modify 6 min · Mix it up 3 min · Make 9 min · Trampoline 3 min
Velocity (vx, vy) is how far the engine moves a sprite every frame. Acceleration (ay) is how much the engine changes the velocity: with ay 300, vy grows by 300 every second, a little each frame. So a sprite with ay falls faster and faster, like a dropped ball. A throw or jump is a speed upwards: vy = -150 (negative, because y counts down). Gravity slows it, stops it at the top, and brings it back down. Nothing in an empty Arcade game is solid, so the lesson's program builds a floor with an if in on game update. Jumping only from the ground is next lesson. Tilemaps (wall tiles) do the floor for you in real platformers.
On the slides at these points. Students can do the whole lesson on their own; these are for the room. In the deck, the Run, Modify and Make slides have the live playground in them (the tutorial link is the backup), and the notes above are in each slide's speaker notes.
Drop a ball from head height while everyone watches. Does it fall at a steady speed?
Drop a real ball: it speeds up. That is ay.
Throw a soft ball straight up and watch: fast, slower, stop, faster down.
That is vy = -150 with gravity adding to it every moment.
Gravity as acceleration, not a speed. Ask what vy is after one second, then after two.
| What you will see | A question to ask | The fix |
|---|---|---|
| The ball falls through the bottom of the screen. | What happens when the ball's bottom goes past 100? | The floor if in on game update puts it back. Check it names the ball. |
| The throw does nothing, or the ball sinks. | Is vy set to a negative or a positive number? | Up is negative: vy = -150. |
| Apples fall at a steady speed. | Which block gives each apple gravity? | Set apple ay inside the timer, after the apple is made. |
One possible solution for each task. Other correct programs are fine.

scene.setBackgroundColor(9)
let ball = sprites.create(img`
. 2 2 .
2 2 2 2
2 2 2 2
. 2 2 .
`, SpriteKind.Player)
ball.setPosition(80, 20)
ball.ay = 300
game.onUpdate(function () {
if (ball.bottom > 100) {
ball.bottom = 100
ball.vy = 0
}
})
controller.A.onEvent(ControllerButtonEvent.Pressed, function () {
ball.vy = -220
})
Open task: any program that does what the step asks.

let apple: Sprite = null
scene.setBackgroundColor(9)
let basket = sprites.create(img`
e . . . . . . e
e e e e e e e e
. e e e e e e .
`, SpriteKind.Player)
basket.setPosition(80, 110)
controller.moveSprite(basket, 100, 0)
basket.setStayInScreen(true)
game.onUpdateInterval(1000, function () {
apple = sprites.create(img`
. . 7 .
. 2 2 .
2 2 2 2
. 2 2 .
`, SpriteKind.Food)
apple.setPosition(randint(10, 150), 0)
apple.ay = 150
})
sprites.onOverlap(SpriteKind.Player, SpriteKind.Food, function (sprite, otherSprite) {
otherSprite.destroy()
info.changeScoreBy(1)
})
Open task: any program that does what the step asks.
Stretch: Make some apples heavier (bigger ay) and worth more points.
Support: Give students the timer that makes apples, and ask them only to add ay and the catch.
A sprite with ay 200 starts still. What is its vy after 2 seconds, and why is it not still 0?
400. Gravity adds 200 to vy every second.
Next lesson: a jump that only works from the ground. Skillmaps: Jungle Jump Platformer and Monster Truck Racer (arcade.makecode.com/skillmaps) practise gravity and jumping with tilemaps.