コード例 #1
0
    void Predict()
    {
        if (!GetComponent <Snap2>().lockTetramino)
        {
            int childcount = 0;
            shadow.transform.position = new Vector3(transform.position.x, sm.CoorToPos(0, gs.gridHeight));
            shadow.transform.rotation = transform.rotation;

            foreach (Transform t in shadow.transform)
            {
                if (Mathf.Abs(t.position.y) > (GridSize.scale * (gs.gridHeight - 1) / 2f))
                {
                    shadow.transform.position += Vector3.up * GridSize.scale;
                }
                int xCoor = sm.PosToCoor(t.position.x, gs.gridWidth);
                int yCoor = sm.PosToCoor(t.position.y, gs.gridHeight);

                for (int i = sm.PosToCoor(transform.GetChild(childcount).position.y, gs.gridHeight) - 1; i >= 0; i--)
                {
                    if (xCoor < gs.gridWidth && xCoor >= 0 && i < gs.gridHeight)
                    {
                        if (g.grid[xCoor, i] != null && sm.CoorToPos(i + 1, gs.gridHeight) > shadow.transform.position.y)
                        {
                            shadow.transform.position = new Vector3(transform.position.x, sm.CoorToPos(i + 1, gs.gridHeight));
                            if (anglelock != 0 && applyOffset)
                            {
                                if (transform.rotation.eulerAngles.z == anglelock)
                                {
                                    shadow.transform.position += t.localPosition.y * GridSize.scale * Vector3.up;
                                }
                            }
                            else if (applyOffset)
                            {
                                if (transform.rotation.eulerAngles.z == 0)
                                {
                                    shadow.transform.position += t.localPosition.y * GridSize.scale * Vector3.up;
                                }
                            }
                            yCoor = sm.PosToCoor(t.position.y, gs.gridHeight);
                            break;
                        }
                    }
                }

                while ((xCoor >= 0 && xCoor < gs.gridWidth && yCoor >= 0 && yCoor < gs.gridHeight) && g.grid[xCoor, yCoor] != null)
                {
                    shadow.transform.position += Vector3.up * GridSize.scale;
                    yCoor = sm.PosToCoor(t.position.y, gs.gridHeight);
                }

                childcount++;
            }
        }
        else
        {
            Destroy(shadow);
        }
    }