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,groundedset_velocity(x, y),apply_impulse(x, y),move_by_velocity(dt)- Override
on_collideX,on_collideY,on_landfor custom response