def __init__(self, x, y, puntos, dinamica=True, densidad=1.0, restitucion=0.56, friccion=10.5, amortiguacion=0.1, fisica=None, sin_rotacion=False, sensor=False): Figura.__init__(self) self._escala = 1 self.puntos = puntos self.dinamica = dinamica self.fisica = fisica if not self.fisica: self.fisica = pilas.escena_actual().fisica self.vertices = [(convertir_a_metros(x1) * self._escala, convertir_a_metros(y1) * self._escala) for (x1, y1) in self.puntos] fixture = box2d.b2FixtureDef(shape=box2d.b2PolygonShape(vertices=self.vertices), density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) self.userData = {'id': self.id, 'figura': self} fixture.userData = self.userData if self.dinamica: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(0, 0), fixtures=fixture) else: self._cuerpo = self.fisica.mundo.CreateKinematicBody(position=(0, 0), fixtures=fixture) self.sin_rotacion = sin_rotacion self.sensor = sensor
def __init__(self, fisica, pilas, x=0, y=0, radio=20, dinamica=True, densidad=1.0, restitucion=0.56, friccion=10.5, amortiguacion=0.1, sin_rotacion=False, sensor=False, interactivo=True): Figura.__init__(self, fisica, pilas) if x is None: x = pilas.azar(10000, 10000 + 100000) if y is None: y = pilas.azar(10000, 10000 + 100000) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._radio = utils.convertir_a_metros(radio) self._escala = 1 self.interactivo = interactivo self.fisica = fisica if not self.fisica: self.fisica = pilas.escena_actual().fisica if not dinamica: densidad = 0 fixture = box2d.b2FixtureDef( shape=box2d.b2CircleShape(radius=self._radio), density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en las # colisiones. self.userData = {'id': self.id, 'figura': self} fixture.userData = self.userData self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(x, y), fixtures=fixture) self.sin_rotacion = sin_rotacion self.sensor = sensor self.dinamica = dinamica if not dinamica: self._cuerpo.mass = 1000000
def __init__(self, fisica, pilas, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.56, friccion=10.5, amortiguacion=0.1, sin_rotacion=False, sensor=False, plataforma=False): Figura.__init__(self, fisica, pilas) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._ancho = utils.convertir_a_metros(ancho) self._alto = utils.convertir_a_metros(alto) self._escala = 1 self.fisica = fisica if not self.fisica: self.fisica = pilas.escena_actual().fisica if not dinamica: densidad = 0 shape = box2d.b2PolygonShape(box=(self._ancho/2, self._alto/2)) shape.SetAsBox(self._ancho/2.0, self._alto/2.0) try: fixture = box2d.b2FixtureDef( shape=shape, density=densidad, friction=friccion, restitution=restitucion) except TypeError: fixture = box2d.b2FixtureDef( shape=shape, density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en # las colisiones. self.userData = {'id': self.id, 'figura': self} fixture.userData = self.userData if plataforma: self._cuerpo = self.fisica.mundo.CreateStaticBody(position=(x, y), fixtures=fixture) self.dinamica = False else: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(x, y), fixtures=fixture) self.dinamica = dinamica self.sin_rotacion = sin_rotacion self.sensor = sensor if not dinamica: self._cuerpo.mass = 1000000
def __init__(self, fisica, pilas, x, y, radio, dinamica=True, densidad=1.0, restitucion=0.56, friccion=10.5, amortiguacion=0.1, sin_rotacion=False, sensor=False): Figura.__init__(self, fisica, pilas) if x is None: x = pilas.azar(10000, 10000 + 100000) if y is None: y = pilas.azar(10000, 10000 + 100000) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._radio = utils.convertir_a_metros(radio) self._escala = 1 self.fisica = fisica if not self.fisica: self.fisica = pilas.escena_actual().fisica if not dinamica: densidad = 0 try: fixture = box2d.b2FixtureDef( shape=box2d.b2CircleShape(radius=self._radio), density=densidad, friction=friccion, restitution=restitucion) except TypeError: fixture = box2d.b2FixtureDef( shape=box2d.b2CircleShape(radius=self._radio), density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en las # colisiones. self.userData = {'id': self.id, 'figura': self} fixture.userData = self.userData self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(x, y), fixtures=fixture) self.sin_rotacion = sin_rotacion self.sensor = sensor self.dinamica = dinamica if not dinamica: self._cuerpo.mass = 1000000
def __init__(self, fisica, pilas, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.5, friccion=.2, amortiguacion=0.1, sin_rotacion=False): Figura.__init__(self, fisica, pilas) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._ancho = utils.convertir_a_metros(ancho) self._alto = utils.convertir_a_metros(alto) self._escala = 1 self.dinamica = dinamica self.fisica = fisica self.sin_rotacion = sin_rotacion if not self.fisica: self.fisica = pilas.escena_actual().fisica if not self.dinamica: densidad = 0 fixture = box2d.b2FixtureDef( shape=box2d.b2PolygonShape(box=(self._ancho / 2, self._alto / 2)), density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en las # colisiones. self.userData = {'id': self.id} fixture.userData = self.userData if self.dinamica: self._cuerpo = self.fisica.mundo.CreateDynamicBody( position=(x, y), fixtures=fixture) else: self._cuerpo = self.fisica.mundo.CreateKinematicBody( position=(x, y), fixtures=fixture) self._cuerpo.fixedRotation = self.sin_rotacion
def __init__(self, fisica, pilas, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.56, friccion=10.5, amortiguacion=0.1, sin_rotacion=False, sensor=False, plataforma=False): Figura.__init__(self, fisica, pilas) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._ancho = utils.convertir_a_metros(ancho) self._alto = utils.convertir_a_metros(alto) self._escala = 1 self.fisica = fisica if not self.fisica: self.fisica = pilas.escena_actual().fisica if not dinamica: densidad = 0 shape = box2d.b2PolygonShape(box=(self._ancho/2, self._alto/2)) shape.SetAsBox(self._ancho/2.0, self._alto/2.0) fixture = box2d.b2FixtureDef(shape=shape, density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en # las colisiones. self.userData = {'id': self.id, 'figura': self} fixture.userData = self.userData if plataforma: self._cuerpo = self.fisica.mundo.CreateStaticBody(position=(x, y), fixtures=fixture) self.dinamica = False else: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(x, y), fixtures=fixture) self.dinamica = dinamica self.sin_rotacion = sin_rotacion self.sensor = sensor if not dinamica: self._cuerpo.mass = 1000000
def __init__(self, fisica, pilas, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.5, friccion=.2, amortiguacion=0.1, sin_rotacion=False): Figura.__init__(self, fisica, pilas) x = utils.convertir_a_metros(x) y = utils.convertir_a_metros(y) self._ancho = utils.convertir_a_metros(ancho) self._alto = utils.convertir_a_metros(alto) self._escala = 1 self.dinamica = dinamica self.fisica = fisica self.sin_rotacion = sin_rotacion if not self.fisica: self.fisica = pilas.escena_actual().fisica if not self.dinamica: densidad = 0 fixture = box2d.b2FixtureDef(shape=box2d.b2PolygonShape(box=(self._ancho/2, self._alto/2)), density=densidad, linearDamping=amortiguacion, friction=friccion, restitution=restitucion) # Agregamos un identificador para controlarlo posteriormente en las # colisiones. self.userData = { 'id' : self.id } fixture.userData = self.userData if self.dinamica: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(x, y), fixtures=fixture) else: self._cuerpo = self.fisica.mundo.CreateKinematicBody(position=(x, y), fixtures=fixture) self._cuerpo.fixedRotation = self.sin_rotacion