Exemple #1
0
    /// <summary>
    /// 绘制连接处的三角
    /// </summary>
    /// <param name="direction"></param>
    /// <param name="cell"></param>
    /// <param name="v1"></param>
    /// <param name="v2"></param>
    private void TriangulateConnection(HexDirection direction, HexCell cell, Vector3 v1, Vector3 v2)
    {
        HexCell neighbor = cell.GetNeighbor(direction);

        if (neighbor == null)
        {
            return;
        }


        Vector3 bridge = HexMertics.GetBridge(direction);

        Vector3 v3 = v1 + bridge;

        Vector3 v4 = v2 + bridge;

        AddQuad(v1, v2, v3, v4);
        AddQuadColor(cell.color, neighbor.color);


        HexCell nextNeighbor = cell.GetNeighbor(direction.Next());

        if (direction <= HexDirection.E && nextNeighbor != null)
        {
            AddTriangle(v2, v4, v2 + HexMertics.GetBridge(direction.Next()));
            AddTriangleColor(cell.color, neighbor.color, nextNeighbor.color);
        }
    }
Exemple #2
0
    private void Triangulate(HexDirection dir, HexCell cell)
    {
        Vector3 center = cell.transform.localPosition;

        Vector3 v1 = center + HexMertics.GetFirstSolidCornor(dir);

        Vector3 v2 = center + HexMertics.GetSecondSolidCornor(dir);

        ///第一个顶点的位置为cell正中心,其余为cell的顶点
        AddTriangle(center, v1, v2);
        AddTriangleColor(cell.color);



        ///根据方向获取相邻的节点
        HexCell neighbor     = cell.GetNeighbor(dir) ?? cell;
        HexCell preNeighbor  = cell.GetNeighbor(dir.Previous()) ?? cell;
        HexCell nextNeighbor = cell.GetNeighbor(dir.Next()) ?? cell;

        if (dir <= HexDirection.SE)
        {
            TriangulateConnection(dir, cell, v1, v2);
        }


        //AddTriangle(v1, center + HexMertics.GetFirstCornor(dir),v3);
        //AddTriangleColor(cell.color, (cell.color + preNeighbor.color + neighbor.color) / 3, bridgeColor);

        //AddTriangle(v2, v4, center + HexMertics.GetSecondCornor(dir));
        //AddTriangleColor(cell.color, bridgeColor, (cell.color + neighbor.color + nextNeighbor.color) / 3);
    }