Example #1
0
    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
Example #2
0
 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]
     self._cuerpo.fixtures[0].shape.vertices = box2d.b2PolygonShape(
         vertices=self.vertices).vertices
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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
Example #6
0
    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
Example #7
0
 def definir_vertices(self):
     self._cuerpo.fixtures[0].shape.vertices = box2d.b2PolygonShape(
         box=(self._ancho / 2, self._alto / 2)).vertices
Example #8
0
 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]
     self._cuerpo.fixtures[0].shape.vertices = box2d.b2PolygonShape(
         vertices = self.vertices).vertices
Example #9
0
 def definir_vertices(self):
     self._cuerpo.fixtures[0].shape.vertices = box2d.b2PolygonShape(
         box=(self._ancho/2,self._alto/2)).vertices