extends TileMap signal kace_broken signal has_moved enum Tile { BRICK = 0, } enum State { DONE, MOVING, } var current_state = State.DONE var current_row = 1 func generate_row(): for k in range(10): set_cell(k, -current_row, Tile.BRICK) func move(): current_row += 1 position.y += cell_size.y func _on_Ball_kace_contact(contact_pos:Vector2): var local_position = to_local(contact_pos) var tile_pos = world_to_map(local_position) var cell = get_cellv(tile_pos) if cell != TileMap.INVALID_CELL and cell == Tile.BRICK: set_cellv(tile_pos, -1) emit_signal("kace_broken") func _on_Launcher_is_full(): generate_row() current_state = State.MOVING move() current_state = State.DONE emit_signal("has_moved")