'Rectangulo' object has no attribute 'z' (pilas 1.4)

Saludos,

Con la nueva versión de pilas (1.4) al añadir esta línea:

pilas.colisiones.agregar(pelota, mono, colision_mono)

a este script:

import pilasengine

pilas = pilasengine.iniciar()

class Pelota(pilasengine.actores.Actor):
    def iniciar(self):
        self.imagen = pilas.imagenes.cargar("aceituna.png")
        self.x = 0
        self.y = -230
        self.vel_x = 2
        self.vel_y = 2

    def mover(self):
        self.x += self.vel_x
        self.y += self.vel_y

        if self.x >= 305 or self.x <= -305:
            self.vel_x = -self.vel_x
        if self.y >= 230:
            self.vel_y = -self.vel_y

    def actualizar(self):
        self.mover()

def colision_mono():
    mono.sonreir()

pelota = Pelota(pilas)
pelota.radio_de_colision = 17
mono = pilas.actores.Mono()

pilas.colisiones.agregar(pelota, mono, colision_mono)

pilas.ejecutar()

me sale es siguiente error:

ERROR AttributeError("'Rectangulo' object has no attribute 'z'",)
-310
AttributeError("'Rectangulo' object has no attribute 'z'",)
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/widget.py", line 115, in timerEvent
    self._realizar_actualizacion_logica()
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/widget.py", line 96, in _realizar_actualizacion_logica
    self.pilas.realizar_actualizacion_logica()
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/__init__.py", line 406, in realizar_actualizacion_logica
    self.escenas.realizar_actualizacion_logica()
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/escenas/__init__.py", line 58, in realizar_actualizacion_logica
    escena.colisiones.actualizar()
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/colisiones/__init__.py", line 77, in actualizar
    self._ejecutar_colision_programada_si_existe(actor_1, actor_2)
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/colisiones/__init__.py", line 86, in _ejecutar_colision_programada_si_existe
    if a in (actor_1, actor_2) and b in (actor_1, actor_2):
  File "/usr/local/lib/python2.7/dist-packages/pilas-1.4.0-py2.7.egg/pilasengine/actores/actor.py", line 736, in __cmp__
    if otro_actor.z >= self.z:
AttributeError: 'Rectangulo' object has no attribute 'z'

El script lo hice siguiendo el ejemplo de colisiones del manual.

Saludos otra vez y Gracias…

Hola @jpablohego, por lo que veo es un bug en pilas :frowning:

Por el momento lo que podrías hacer es definir la colisión entre etiquetas, eso va a funcionar bien:

Tendría que cambiar la linea:

pilas.colisiones.agregar(pelota, mono, colision_mono)

por algo así:

pilas.colisiones.agregar("pelota", "mono", colision_mono)

En breve arreglo en bug y subo una versión nueva, mil disculpas…

Eso haré, muchas gracias.

Saludos.

Ahí subí la versión 1.4.1 de pilas-engine a la web, donde arreglo este problema:

http://pilas-engine.com.ar/#/descargas