/** * Bounces actors around the screen. */ class Bounce : AbstractRole() { var speed = Vector2(1, 1) var scale = 1.1 var ticks = 0 override fun begin() { super.begin() ticks = 0 } override fun tick() { val viewRect = Game.instance.scene.findView("main").rect if (ticks < 1400) { speed *= 1.001 ticks++ } actor.position += speed val rect = actor.appearance.worldRect() if ((rect.left < 0.0 && speed.x < 0) || (rect.right >= viewRect.right && speed.x > 0)) { speed.x = -speed.x actor.scale *= scale } if ((rect.top >= viewRect.top && speed.y > 0) || (rect.bottom < 0.0 && speed.y < 0)) { speed.y = -speed.y //actor.scale = actor.scale.mul(scale) } // Start shrinking instead of growing. if (scale > 1.0 && rect.width > 300) { scale = 1 / scale } } }