def mover(self, x, y): """Realiza un movimiento de la figura. :param x: Posición horizontal. :param y: Posición vertical. """ self.constante.target = (utils.convertir_a_metros(x), utils.convertir_a_metros(y))
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 definir_x(self, x): """Define la posición horizontal del cuerpo. :param x: El valor horizontal a definir. """ self._cuerpo.position = utils.convertir_a_metros( x), self._cuerpo.position.y
def definir_y(self, y): """Define la posición vertical del cuerpo. :param y: El valor vertical a definir. """ self._cuerpo.position = self._cuerpo.position.x, utils.convertir_a_metros( y)
def __init__(self, pilas, figura): """Inicializa la constante. :param pilas: instancia de pilas :param figura: Figura a controlar desde el mouse. """ self.pilas = pilas mundo = pilas.escena_actual().fisica.mundo punto_captura = utils.convertir_a_metros(figura.x), utils.convertir_a_metros(figura.y) self.cuerpo_enlazado = mundo.CreateBody() self.constante = mundo.CreateMouseJoint(bodyA=self.cuerpo_enlazado, bodyB=figura._cuerpo, target=punto_captura, maxForce=1000.0*figura._cuerpo.mass) figura._cuerpo.awake = True
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
def set_radius(self, radio): self._escala = (self._escala * radio) / self.radio self._radio = utils.convertir_a_metros(radio) self.definir_radio()
def definir_y(self, y): """Define la posición vertical del cuerpo. :param y: El valor vertical a definir. """ self._cuerpo.position = self._cuerpo.position.x, utils.convertir_a_metros(y)
def definir_x(self, x): """Define la posición horizontal del cuerpo. :param x: El valor horizontal a definir. """ self._cuerpo.position = utils.convertir_a_metros(x), self._cuerpo.position.y
def set_height(self, alto): self._alto = utils.convertir_a_metros(alto) self.definir_vertices()
def set_width(self, ancho): self._ancho = utils.convertir_a_metros(ancho) self.definir_vertices()