Skip to content

Phaser: Physics

New Course Coming Soon:

Get Really Good at Git

This post is part of a Phaser series. Click here to see the first post of the series.

Phaser provides 3 different kinds of built-in physics engines:

Arcade is the simplest one, and the one I’ll describe right now.

Enable it by adding a physics property to the Phaser.Game initialization config object:

const config = {
  //...
  physics: {
    default: 'arcade',
    arcade: {
      debug: false
    }
  }
}

You can add physics to a single GameObject, like this:

const dog = this.physics.add.sprite(20, 20, 'dog')

or you can create a physics group.

Groups are handy, because we can setup common rules for all the items in a group.

We have 2 kinds of groups: static groups, and dynamic groups. A static group include static bodies, and a dynamic group includes dynamic bodies.

Static bodies are element that never move. Like the ground in a platform game:

//in preload()
this.load.image('ground', 'assets/platform.png')

//in create()
const platforms = this.physics.add.staticGroup()
const ground = this.add.sprite(200, 200, 'ground')
platforms.add(ground)

Note: you can download the asset from https://github.com/photonstorm/phaser3-examples/tree/master/public/assets

A dynamic group includes elements that can move, and have a velocity and speed:

const dogs = this.physics.add.group()

You can add items to a group using items.add().

const dogs = this.physics.add.group()
const dog = this.add.sprite(20, 20, 'dog')
dogs.add(dog)

Groups also provide a handy create() method which we can use to create GameObjects automatically:

platforms.create(200, 200, 'ground')

//instead of
const ground = this.add.sprite(200, 200, 'ground')
platforms.add(ground)

Once you have a physics object set up, you can start working on collisions.

Are you intimidated by Git? Can’t figure out merge vs rebase? Are you afraid of screwing up something any time you have to do something in Git? Do you rely on ChatGPT or random people’s answer on StackOverflow to fix your problems? Your coworkers are tired of explaining Git to you all the time? Git is something we all need to use, but few of us really master it. I created this course to improve your Git (and GitHub) knowledge at a radical level. A course that helps you feel less frustrated with Git. Launching May 21, 2024. Join the waiting list!

Here is how can I help you: