private void UpdatePiecesReplacement() { for (int i = selection.transform.childCount - 1; i >= 0; i--) { Transform piece = selection.transform.GetChild(i); var logical_piece = piece.gameObject.GetComponent <Piece>(); logical_piece.SetInactiveOnMapState(); if (logical_piece.GoesOut(movement_direction)) { // Si la ficha sale del tablero se genera automaticamente su reemplazo en la // direccion opuesta para realizar la animacion correspondiente y se elimina // la ficha ke muere int next_x = logical_piece.x, next_y = logical_piece.y; if (moving_on_x) { next_x = logical_piece.x == 0 ? levelBuilder.level_width : -1; } else { next_y = logical_piece.y == 0 ? levelBuilder.level_height : -1; } GameObject new_piece = levelBuilder.BuildPieceGameObject(new Vector2(next_x, next_y), LevelBuilder.piece_kind_normal); new_piece.transform.parent = selection.transform; new_piece.name = piece.name; // Manda a eliminar la ficha al terminar la animacion del movimiento actual logical_piece.AutoDestroyOnFuture(); } } }