Ejemplo n.º 1
0
 void ClickBox_OnDropEvent(PointerEventData eventData)
 {
     if (_assignedPiece != null && eventData.pointerDrag != null && _cGroup.alpha == _defaultAlpha)
     {
         PuzzlePieceController puzzlepiece = eventData.pointerDrag.GetComponent <PuzzlePieceController>();
         if (_assignedPiece == eventData.pointerDrag)
         {
             puzzlepiece.DroppedInSlot = true; // Alert the source piece that it has been dropped in its designated slot (it will then be disabled)
             _assignedPiece            = null;
             StartCoroutine(FadeInSlot());
         }
         // } else
         // {
         //     puzzlepiece.DroppedOnSlot = false; //* CONSIDER unnecessary?
         // }
     }
 }
Ejemplo n.º 2
0
    /// <Summary>
    /// パズルピースを生成します。
    /// </Summary>
    /// <param name="buttonNum">ボタンの数(平方数で指定)</param>
    /// <param name="index">生成するピースのインデックス</param>
    public GameObject GeneratePuzzlePieces(int buttonNum, int index)
    {
        // インスタンス化するピースの数を計算します。
        int pieceNum = buttonNum - 1;

        // 1行に配置されるピースの数を計算します。
        int piecesInRow = (int)Mathf.Sqrt(buttonNum);

        // インスタンス化するPrefabを取得します。
        GameObject piecePrefab = GetPuzzlePiecePrefab();

        // インスタンス化するピースのサイズを取得します。
        RectTransform pieceRect   = piecePrefab.GetComponent <RectTransform>();
        float         pieceWidth  = pieceRect.rect.width;
        float         pieceHeight = pieceRect.rect.height;

        // ピースをインスタンス化します。
        GameObject pieceObj = Instantiate(piecePrefab, Vector3.zero, Quaternion.identity);

        // 生成したオブジェクトの名前を変更します。
        pieceObj.name = $"{piecePrefab.name}{index}";

        // 生成したオブジェクトをピースオブジェクトの親オブジェクトの下に配置します。
        pieceObj.transform.SetParent(puzzlePieceParent.transform);

        // ピースを配置する位置を計算します。
        Vector2 piecePos = GetPuzzlePartsPos(index, piecesInRow, pieceWidth, pieceHeight);

        // 計算した位置を格納します。
        pieceObj.transform.localPosition = piecePos;

        // 親オブジェクトの縮尺をセットします。
        pieceObj.transform.localScale = puzzlePieceParent.transform.localScale;

        // このピースにセットするスプライトを取得します。
        Sprite sprite = GetPieceSprite(index, piecesInRow);

        // ピースのIDとスプライトをセットします。
        PuzzlePieceController controller = pieceObj.GetComponent <PuzzlePieceController>();

        controller.SetUpPiece(index, sprite);

        return(pieceObj);
    }