def trigger(self, ui): """ Trigger this animation """ damage_counter = DamageCounter(damage=str(self.damage), colour=self.colour, parent=ui) ui.view.scene().addItem(damage_counter) damage_counter.setZValue(zorder_counter) bounds = damage_counter.boundingRect() width = bounds.width() rand = Random() damage_counter.setPos((self.location[0] * 32 + 16 - (width / 2) + rand.randint(-16, 16)) + self.offset[0], self.location[1] * 32 + self.offset[1]) animation = QSequentialAnimationGroup() moving = QPropertyAnimation(damage_counter.adapter, 'y_location') moving.setDuration(750) moving.setStartValue(self.location[1] * 32 + self.offset[1]) moving.setEndValue(self.location[1] * 32 - 32 + self.offset[1]) curve = QEasingCurve(QEasingCurve.OutElastic) moving.setEasingCurve(curve) animation.addAnimation(moving) fading = QPropertyAnimation(damage_counter.adapter, 'opacity') fading.setDuration(750) fading.setStartValue(1.0) fading.setEndValue(0.0) animation.addAnimation(fading) def clean_up(): animation.stop() ui.animations.remove(animation) ui.view.items().remove(damage_counter) ui.remove_finished_animation() animation.finished.connect(clean_up) ui.animations.append(animation) animation.start()