Ejemplo n.º 1
0
    LayerHex searchPositionInMap(GameObject hex)
    {
        float    d            = 100000f;
        LayerHex findHex      = null;
        int      indexOfArray = -1;
        int      len          = mLayerHex.Length;

        for (int i = 0; i < len; i++)
        {
            LayerHex layerHex = mLayerHex[i];
            float    tmp      = Mathf.Sqrt(Mathf.Pow((layerHex.x - hex.transform.position.x), 2)
                                           + Mathf.Pow((layerHex.y - hex.transform.position.y), 2));
            if (d > tmp)
            {
                d = tmp;
                layerHex.indexOfArray = i;
                findHex      = layerHex;
                indexOfArray = i;
            }
        }
        if (d > mHexColliderD)
        {
            return(null);
        }

        return(findHex);
    }
Ejemplo n.º 2
0
    public bool addHexsForMap(GameObject[] hexs)
    {
        int len = hexs.Length;

        LayerHex[] hexsPosition = new LayerHex[len];
        for (int i = 0; i < len; i++)
        {
            hexsPosition[i] = searchPositionInMap(hexs[i]);
            if (hexsPosition[i] == null || hexsPosition[i].hex != null)
            {
                return(false);
            }
        }
        for (int i = 0; i < len; i++)
        {
            //保存用来计算是否练成线,以消除
            mLayerFilledHexs[hexsPosition[i].indexOfArray] = hexs[i];

            Vector3 position = new Vector3(hexsPosition[i].x, hexsPosition[i].y, 0);
            hexs[i].GetComponent <SpriteRenderer>().sortingOrder = 1;
            hexs[i].transform.position = position;
            hexsPosition[i].hex        = hexs[i];
            //hexsPosition[i].hex = (GameObject)Instantiate(mRedPrefabHex, position, mRedPrefabHex.transform.rotation);
        }

        calcResult();
        return(true);
    }
Ejemplo n.º 3
0
    public bool addHexsForMap(GameObject[] hexs)
    {
        int len = hexs.Length;
        LayerHex[] hexsPosition = new LayerHex[len];
        for (int i = 0; i < len; i++)
        {
            hexsPosition[i] = searchPositionInMap(hexs[i]);
            if (hexsPosition[i] == null ||  hexsPosition[i].hex != null)
                return false;
        }
        for (int i = 0; i < len; i++)
        {
            //保存用来计算是否练成线,以消除
            mLayerFilledHexs[hexsPosition[i].indexOfArray] = hexs[i];

            Vector3 position = new Vector3(hexsPosition[i].x, hexsPosition[i].y, 0);
            hexs[i].GetComponent<SpriteRenderer>().sortingOrder = 1;
            hexs[i].transform.position = position;
            hexsPosition[i].hex = hexs[i];
            //hexsPosition[i].hex = (GameObject)Instantiate(mRedPrefabHex, position, mRedPrefabHex.transform.rotation);
        }

        calcResult();
        return true;
    }
Ejemplo n.º 4
0
    void initUnderLayers(int layer, int indexOfLayer, int indexOfAllHex, float layerSpace, LayerHex firstHex)
    {
        LayerHex layerHex = new LayerHex();

        layerHex.layer           = layer;
        layerHex.y               = firstHex.y - layer * layerSpace;
        layerHex.x               = firstHex.x - (8 - layer) * mHexColliderD + 2 * mHexColliderD * indexOfLayer;
        mLayerHex[indexOfAllHex] = layerHex;
    }
Ejemplo n.º 5
0
    // Use this for initialization
    void Start()
    {
        mRedPrefabHex = GameObject.Find("RedPrefab");
        mPrefabHex    = GameObject.Find("BGFirstHex");
        mHexColliderR = mPrefabHex.gameObject.GetComponent <CircleCollider2D>().bounds.size.x / 2;
        mHexColliderD = Mathf.Sqrt(3.0f) / 2.0f * mHexColliderR;
        //每一层hex的距离
        float layerSpace = 3.0f / 2.0f * mHexColliderR;

        LayerHex firstHex = new LayerHex();

        firstHex.x = mPrefabHex.transform.position.x;
        firstHex.y = mPrefabHex.transform.position.y;
        int layer = 0, indexOfAllHex = 0;

        for (int i = 5; i < 10; i++)
        {
            for (int j = 0; j < i; j++)
            {
                initAboveLayers(layer, j, indexOfAllHex, layerSpace, firstHex);
                indexOfAllHex++;
            }
            layer++;
        }

        for (int i = 8; i > 4; i--)
        {
            for (int j = 0; j < i; j++)
            {
                initUnderLayers(layer, j, indexOfAllHex, layerSpace, firstHex);
                indexOfAllHex++;
            }
            layer++;
        }

        foreach (LayerHex layerHex in mLayerHex)
        {
            Vector3 position = new Vector3(layerHex.x, layerHex.y, 0);
            Instantiate(mPrefabHex, position, mPrefabHex.transform.rotation);
        }
    }
Ejemplo n.º 6
0
    // Use this for initialization
    void Start()
    {
        mRedPrefabHex = GameObject.Find("RedPrefab");
        mPrefabHex = GameObject.Find("BGFirstHex");
        mHexColliderR = mPrefabHex.gameObject.GetComponent<CircleCollider2D>().bounds.size.x / 2;
        mHexColliderD = Mathf.Sqrt(3.0f) / 2.0f * mHexColliderR;
        //每一层hex的距离
        float layerSpace = 3.0f / 2.0f * mHexColliderR;

        LayerHex firstHex = new LayerHex();
        firstHex.x = mPrefabHex.transform.position.x;
        firstHex.y = mPrefabHex.transform.position.y;
        int layer = 0, indexOfAllHex = 0;
        for (int i = 5; i < 10; i++)
        {
            for (int j = 0; j < i; j++)
            {
                initAboveLayers(layer, j, indexOfAllHex, layerSpace, firstHex);
                indexOfAllHex++;
            }
            layer++;
        }

        for (int i = 8; i > 4; i--)
        {
            for (int j = 0; j < i; j++)
            {
                initUnderLayers(layer, j, indexOfAllHex, layerSpace, firstHex);
                indexOfAllHex++;
            }
            layer++;
        }

        foreach (LayerHex layerHex in mLayerHex)
        {
            Vector3 position = new Vector3(layerHex.x, layerHex.y, 0);
            Instantiate(mPrefabHex, position, mPrefabHex.transform.rotation);
        }
    }
Ejemplo n.º 7
0
 void initUnderLayers(int layer, int indexOfLayer, int indexOfAllHex, float layerSpace, LayerHex firstHex)
 {
     LayerHex layerHex = new LayerHex();
     layerHex.layer = layer;
     layerHex.y = firstHex.y - layer * layerSpace;
     layerHex.x = firstHex.x - (8 - layer) * mHexColliderD + 2 * mHexColliderD * indexOfLayer;
     mLayerHex[indexOfAllHex] = layerHex;
 }