Exemple #1
0
        /// <summary>
        /// 各「次に落ちてくるブロック」更新
        /// </summary>
        /// <param name="tileInfo"></param>
        /// <param name="target"></param>
        private void updateNextTile(TileInfo tileInfo, BlockStatus target)
        {
            tileInfo.InitializeGrid(blankTilePrefab);
            Vector3Int center = target.IsLineBlock ? new Vector3Int(1, 1, 0) : new Vector3Int(1, 0, 0);

            // (0,0)座標のブロック更新
            int statIdx = CalcIdx(center.x, center.y, tileInfo.Size.x);

            tileInfo.TileTypeAry[statIdx] = eachTilePrefabs[target.Type];

            // 相対座標分のブロック更新
            for (int i = 0; i < SharedConstant.RELATIVE_BLOCK_NUM; i++)
            {
                BlockSettingData settingData = SharedConstant.BLOCK_DATA[target.SettingDataIdx];
                GridPos          diffPos     = BoardInfo.CalcRelativeRotatePos(settingData.RelativePos[i], settingData.RotatableNum, target.RotateNum);

                int expectedIdx = CalcIdx(center.x + diffPos.x, center.y + diffPos.y, tileInfo.Size.x);
                tileInfo.TileTypeAry[expectedIdx] = eachTilePrefabs[target.Type];
            }

            tileInfo.DrawTile();
        }