def get_pymunk_space(gravity=(0, -9.807)): '''returns a `space` where the physics happens''' space = Space() # gravity is represented by a tuple # 0 acceleration in x-axis and -9.807 in y-axis space.gravity = gravity return space
def initSpace(): space = Space() space.gravity = Vec2d(0.0, -900.0) space.collision_bias = 0 # attach collision handlers (defined at the end of the file) space.add_collision_handler( Rocket.collisionType, Platform.collisionType, begin = rocketHandler ) space.add_collision_handler( Player.collisionType, Explosion.collisionType, begin = explosionHandler ) space.add_collision_handler( Player.collisionType, Trigger.collisionType, begin = triggerOn, separate = triggerOff ) space.add_collision_handler( Player.collisionType, Platform.collisionType, pre_solve = notifyPlayer, ) return space
def init_space(): sp = Space() sp.gravity = (0, 50) chain = make_pivot_chain(sp, (0, 0), (240, 30), 30) sp.add(constraint.PivotJoint(chain[0], sp.static_body, chain[0].position)) # Cria quadrado L = 25 player = Body(mass=1, moment=100) shape = Poly(player, [(-L, -L), (L, -L), (L, L), (-L, L)]) player.position = (90, 60) player.velocity = (-25, 25) shape.elasticity = 1.0 shape.color = pyxel.COLOR_RED shape.collision_type = 42 ball = Body(mass=1, moment=200) ball_shape = Circle(ball, 20) ball.position = (player.position.x, 130) ball_shape.elasticity = 1.0 shape.color = pyxel.COLOR_NAVY ball_shape.collision_type = 42 joint1 = constraint.DampedSpring(player, ball, (0, 0), (20, 0), 20, 3, 0.5) joint2 = constraint.PivotJoint(sp.static_body, player, (65, 35)) joint1.collide_bodies = False sp.add(joint1, joint2) body2 = Body(1, 100) sp.add(body2) sp.add(Poly(body2, [(-3, 3), (3, 3), (3, -3), (-3, -3)])) body2.position = 220, 50 sp.add(constraint.DampedRotarySpring(body2, ball, 0, 2, 1)) sp.body2 = body2 # Cria margens line = Body(body_type=Body.STATIC) e = 0 lines = [ Segment(line, (-e, -e), (240 + e, -e), 2), Segment(line, (-e, 180 + e), (240 + e, 180 + e), 2), Segment(line, (-e, -e), (-e, 180 + e), 2), Segment(line, (240 + e, -e), (240 + e, 180 + e), 2), ] for line in lines: line.elasticity = 1.0 lines = [] # Adiciona elementos ao espaço sp.add(player, shape, ball, ball_shape, *lines) sp.player = player #handler = sp.add_collision_handler(42, 42) #handler.begin = lambda *args: False return sp
def init_space(): sp = Space() sp.gravity = (0, 50) sp.damping = 1.0 floor = Body(body_type=Body.STATIC) stick = Body(mass=100, moment=100 * 50**2) L = 20 shapes = [ Poly(stick, [(-L, -L), (L, -L), (L, L), (0, L + L / 2), (-L, L)], radius=3), Segment(floor, (1, 179), (239, 179), 1), Segment(floor, (1, 1), (239, 1), 1), Segment(floor, (1, 1), (1, 179), 1), Segment(floor, (239, 1), (239, 179), 1), ] stick.position = (120, L) bodies = [] for _ in range(L): r = random.uniform(2, 6) mass = pi * r**2 body = Body(mass=mass, moment=mass * r**2 / 2) circle = Circle(body, r) x = random.uniform(r, 240 - r) y = random.uniform(r, 180 - r) body.position = (x, y) vx = random.uniform(-L, L) vy = random.uniform(-L, L) body.velocity = (vx, vy) bodies.append(body) shapes.append(circle) circle.color = random.randint(1, 15) for shape in shapes: shape.elasticity = 1.0 sp.add(floor, stick, *bodies, *shapes) return sp
def createSpace(engine_): global engine engine = engine_ space = Space() space.gravity = Vec2d(0.0, 0.0) PhysicsEntity.body = space.static_body # attach collision handlers (defined at the end of the file) space.add_collision_handler( Blob.collisionType, Blob.collisionType, # begin = handler_blob # separate = handler_blob pre_solve = handler_blob ) # space.add_collision_handler( # Blob.collisionType, # Wall.collisionType, # pre_solve = handler_wall, # ) return space