private void Slide() { var hexCoordinate = emptyGrids.Pop(); Vector2 coordinate = hexCoordinate.coordinate; Vector2 desiredCoordinate = new Vector2(coordinate.x, coordinate.y - 1); if (desiredCoordinate.y >= 0) { var targetCoordinate = GetHexCoordinateByCoordinate(desiredCoordinate); if (targetCoordinate != null && !emptyGrids.Contains(targetCoordinate)) { Hexagon hexagon = hexagons[targetCoordinate]; if (hexagon != null) { hexagons[targetCoordinate] = null; hexagons[hexCoordinate] = hexagon; hexagon.HexCoordinate = hexCoordinate; emptyGrids.Push(targetCoordinate); hexagon.transform.position = hexCoordinate.position; // hexagon.Move(hexCoordinate, MoveType.SLIDING); // yield return new WaitForSeconds(0.09f); } } } else { Hexagon hexagon = CreateHexagon(hexCoordinate); hexagons[hexCoordinate] = hexagon; } if (emptyGrids.Count == 0) { sliding.End(); } }