Skip to main content
Version: Release

Physics

PhysicsWorld is an entity that simulates AABB collisions with gravity.

world = bf.PhysicsWorld(gravity=(0, 900))
world.add_layer("terrain")
world.add_layer("actors")
world.add_static("terrain", ground)
world.add_dynamic("actors", player)
world.set_layers_collide("actors", "terrain")
scene.add("world", world)
Physics layers ≠ scene layers

CollisionLayer names group bodies for collision filtering. They are separate from SceneLayer (world / hud).

Setup​

  • add_layer(name)
  • add_static(layer, *entities) / add_dynamic(layer, *entities)
  • set_layers_collide(a, b, collide=True)
  • set_collision_callback(a, b, callback)
  • enable_spatial_hash(cell_size=64)

Queries​

  • raycast, query_rect, query_point, check_collision

DynamicEntity​

Movable bodies usually inherit DynamicEntity:

  • velocity, mass, restitution, grounded
  • set_velocity(x, y), apply_impulse(x, y), move_by_velocity(dt)
  • Override on_collideX, on_collideY, on_land for custom response