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): Figura.__init__(self) self._escala = 1 self.puntos = puntos self.dinamica = dinamica self.fisica = fisica self.sin_rotacion = sin_rotacion 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 } 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._cuerpo.fixedRotation = self.sin_rotacion
def __init__(self, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.5, friccion=.2, amortiguacion=0.1, fisica=None, sin_rotacion=False): Figura.__init__(self) x = convertir_a_metros(x) y = convertir_a_metros(y) self._ancho = convertir_a_metros(ancho) self._alto = 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 __crear_fixture(self): fixture = box2d.b2FixtureDef(shape=box2d.b2PolygonShape(box=(self._ancho/2, self._alto/2)), density=self._cuerpo.fixtures[0].density, linearDamping=self._cuerpo.fixtures[0].body.linearDamping, friction=self._cuerpo.fixtures[0].friction, restitution=self._cuerpo.fixtures[0].restitution) fixture.userData = self.userData self.fisica.mundo.DestroyBody(self._cuerpo) if self.dinamica: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(self._cuerpo.position.x, self._cuerpo.position.y), angle=self._cuerpo.angle, linearVelocity=self._cuerpo.linearVelocity, fixtures=fixture) else: self._cuerpo = self.fisica.mundo.CreateKinematicBody(position=(self._cuerpo.position.x, self._cuerpo.position.y), angle=self._cuerpo.angle, fixtures=fixture) self._cuerpo.fixedRotation = self.sin_rotacion
def definir_escala(self, escala): self._escala = escala 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=self._cuerpo.fixtures[0].density, linearDamping=self._cuerpo.fixtures[0].body.linearDamping, friction=self._cuerpo.fixtures[0].friction, restitution=self._cuerpo.fixtures[0].restitution) fixture.userData = self.userData self.fisica.mundo.DestroyBody(self._cuerpo) if self.dinamica: self._cuerpo = self.fisica.mundo.CreateDynamicBody(position=(self._cuerpo.position.x, self._cuerpo.position.y), angle=self._cuerpo.angle, linearVelocity=self._cuerpo.linearVelocity, fixtures=fixture) else: self._cuerpo = self.fisica.mundo.CreateKinematicBody(position=(self._cuerpo.position.x, self._cuerpo.position.y), angle=self._cuerpo.angle, fixtures=fixture) self._cuerpo.fixedRotation = self.sin_rotacion
def __init__(self, x, y, ancho, alto, dinamica=True, densidad=1.0, restitucion=0.5, friccion=.2, amortiguacion=0.1, fisica=None, sin_rotacion=False): Figura.__init__(self) x = convertir_a_metros(x) y = convertir_a_metros(y) self._ancho = convertir_a_metros(ancho) self._alto = 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