Beispiel #1
0
    private void ConnectPiece(PuzzleConnectionScript conn)
    {
        PuzzlePieceScript conPiece = conn.pointToConnet.myPuzzle.currPiece;

        Transform          connPieceTransform = conPiece.transform;
        SinglePuzzleScript conPuzzle          = conn.myPuzzle;

        connPieceTransform.position += conPuzzle.transform.position - conn.pointToConnet.myPuzzle.transform.position + conPuzzle.offsets[conn.connIndex];

        SinglePuzzleScript[] connectedPuzzles = conPiece.puzzles;
        foreach (SinglePuzzleScript puzzle in connectedPuzzles)
        {
            puzzle.transform.SetParent(transform);
            foreach (PuzzleConnectionScript puzzleCon in puzzle.puzzleConnections)
            {
                if (puzzleCon != null && !puzzleCon.isConnected && puzzleCon.pointToConnet.myPuzzle.currPiece == this)
                {
                    puzzleCon.isConnected               = true;
                    puzzleCon.pointCollider.enabled     = false;
                    puzzleCon.pointToConnet.isConnected = true;
                    puzzleCon.pointCollider.enabled     = false;
                }
            }
        }
        GameManagerScript.instance.OnPieceConnected();
        ReorganizeChildrens();
        PuzzleRenderOrderScript.instance.RemovePiece(conPiece);
        Destroy(conPiece.gameObject);
    }
Beispiel #2
0
    public void PresetPuzzle()
    {
        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
                GameObject parrent = new GameObject("Piece" + (i * width + j), typeof(PuzzlePieceScript));
                parrent.transform.position = puzzles[i * width + j].transform.position;
                puzzles[i * width + j].transform.SetParent(parrent.transform);

                puzzles[i * width + j].puzzleConnections = new PuzzleConnectionScript[4];
                puzzles[i * width + j].offsets           = new Vector3[4];

                if (i != 0)
                {
                    GameObject topConn = new GameObject("TopConPoint", typeof(BoxCollider2D), typeof(PuzzleConnectionScript));
                    topConn.transform.position = puzzles[i * width + j].transform.position;
                    topConn.transform.SetParent(puzzles[i * width + j].transform);
                    topConn.GetComponent <BoxCollider2D>().isTrigger = true;
                    PuzzleConnectionScript topConnScript = topConn.GetComponent <PuzzleConnectionScript>();
                    topConnScript.pointToConnet = puzzles[(i - 1) * width + j].puzzleConnections[2];
                    puzzles[(i - 1) * width + j].puzzleConnections[2].pointToConnet = topConnScript;
                    puzzles[i * width + j].puzzleConnections[0] = topConnScript;

                    puzzles[i * width + j].offsets[0]       = puzzles[(i - 1) * width + j].transform.position - puzzles[i * width + j].transform.position;
                    puzzles[(i - 1) * width + j].offsets[2] = puzzles[i * width + j].transform.position - puzzles[(i - 1) * width + j].transform.position;
                }

                if (j != width - 1)
                {
                    GameObject rightConn = new GameObject("RightConPoint", typeof(BoxCollider2D), typeof(PuzzleConnectionScript));
                    rightConn.transform.position = puzzles[i * width + j].transform.position;
                    rightConn.transform.SetParent(puzzles[i * width + j].transform);
                    rightConn.GetComponent <BoxCollider2D>().isTrigger = true;
                    puzzles[i * width + j].puzzleConnections[1]        = rightConn.GetComponent <PuzzleConnectionScript>();
                }

                if (i != height - 1)
                {
                    GameObject bottomConn = new GameObject("BottomConPoint", typeof(BoxCollider2D), typeof(PuzzleConnectionScript));
                    bottomConn.transform.position = puzzles[i * width + j].transform.position;
                    bottomConn.transform.SetParent(puzzles[i * width + j].transform);
                    bottomConn.GetComponent <BoxCollider2D>().isTrigger = true;
                    puzzles[i * width + j].puzzleConnections[2]         = bottomConn.GetComponent <PuzzleConnectionScript>();
                }

                if (j != 0)
                {
                    GameObject leftConn = new GameObject("LeftConPoint", typeof(BoxCollider2D), typeof(PuzzleConnectionScript));
                    leftConn.transform.position = puzzles[i * width + j].transform.position;
                    leftConn.transform.SetParent(puzzles[i * width + j].transform);
                    leftConn.GetComponent <BoxCollider2D>().isTrigger = true;
                    PuzzleConnectionScript leftConnScript = leftConn.GetComponent <PuzzleConnectionScript>();
                    leftConnScript.pointToConnet = puzzles[i * width + j - 1].puzzleConnections[1];
                    puzzles[i * width + j - 1].puzzleConnections[1].pointToConnet = leftConnScript;
                    puzzles[i * width + j].puzzleConnections[3] = leftConnScript;

                    puzzles[i * width + j].offsets[3]     = puzzles[i * width + j - 1].transform.position - puzzles[i * width + j].transform.position;
                    puzzles[i * width + j - 1].offsets[1] = puzzles[i * width + j].transform.position - puzzles[i * width + j - 1].transform.position;
                }
            }
        }
    }