/// <summary>
    /// 生成一个随机凹凸的拼图
    /// </summary>
    /// <param name="jigsawStyle"></param>
    /// <param name="jigsawW"></param>
    /// <param name="jigsawH"></param>
    /// <returns></returns>
    public static JigsawBean createJigsaw(JigsawStyleEnum jigsawStyle, float jigsawW, float jigsawH, Texture2D jigsawPic)
    {
        JigsawBean jigsawBean = new JigsawBean();
        //按样式生成不同的拼图碎片
        IBaseJigsawBuilder jigsawBuilder;

        JigsawBulgeEnum[] bulge;

        if (jigsawStyle == JigsawStyleEnum.Def)
        {
            jigsawBuilder = new NomralJigsawBuilder();
            bulge         = new JigsawBulgeEnum[4]
            {
                (JigsawBulgeEnum)DevUtil.getRandomInt(0, 2),
                (JigsawBulgeEnum)DevUtil.getRandomInt(0, 2),
                (JigsawBulgeEnum)DevUtil.getRandomInt(0, 2),
                (JigsawBulgeEnum)DevUtil.getRandomInt(0, 2)
            };
        }
        else
        {
            LogUtil.logError("没有相对于样式的拼图");
            return(null);
        }
        return(jigsawBuilder.buildJigsaw(jigsawW, jigsawH, bulge, jigsawPic));
    }
Beispiel #2
0
    /// <summary>
    /// 移动到发射口
    /// </summary>
    private void moveToMouth()
    {
        int listCount = mListObj.Count;

        for (int i = 0; i < listCount; i++)
        {
            GameObject itemObj = mListObj[i];
            itemObj
            .transform
            .DOMove(new Vector3(0, 0), mMoveToMouthTime)
            .SetDelay(mLaunchOffTime * i)
            .OnComplete(delegate()
            {
                int xF = DevUtil.getRandomInt(-10, 10);
                int yF = DevUtil.getRandomInt(-100, -10);
                GameStartAnimationManager.PuzzlesStartPre(itemObj, xF, yF);
            });
        }
        mGameStartControl.transform
        .DOScale(new Vector3(1, 1, 1), mLaunchOffTime * listCount + mMoveToMouthTime)
        .OnComplete(delegate()
        {
            mGameStartControl.gameStart();
        });
    }
Beispiel #3
0
    /// <summary>
    /// 拼图开始的准备工作  动画结束之后需要调用一次
    /// </summary>
    public static void PuzzlesStartPre(GameObject itemObj)
    {
        int xForce = DevUtil.getRandomInt(-xForceMax, xForceMax);
        int yForce = DevUtil.getRandomInt(-yForceMax, yForceMax);

        PuzzlesStartPre(itemObj, xForce, yForce);
    }
    public override void startAnim()
    {
        float radius = 0;

        if (mGameStartControl.picAllWith > mGameStartControl.picAllHigh)
        {
            radius = mGameStartControl.picAllHigh;
        }
        else
        {
            radius = mGameStartControl.picAllWith;
        }

        int            listCount     = mListObj.Count;
        List <Vector3> listCircleVec = GeometryUtil.getCircleVertices(mStartPosition, radius * 1.9f, listCount, true, CircleStartVectorEnum.Left);
        int            circleCount   = listCircleVec.Count;

        for (int i = 0; i < listCount; i++)
        {
            GameObject itemObj = mListObj[i];
            //设置层级
            JigsawContainerCpt containerCpt = itemObj.transform.GetComponent <JigsawContainerCpt>();
            if (containerCpt == null)
            {
                continue;
            }
            containerCpt.setSortingOrder(listCount - i);

            //  int mListMoveCount=  DevUtil.getRandomInt(1, circleCount);
            Vector3[] listMove = new Vector3[mListMoveCount];
            for (int f = 0; f < mListMoveCount; f++)
            {
                int randomPosition = DevUtil.getRandomInt(0, circleCount - 1);
                listMove[f] = listCircleVec[randomPosition];
            }
            //开始run
            itemObj.transform
            .DOPath(listMove, mRunTime)
            .SetDelay(mPrependTime)
            .OnComplete(delegate() {
                GameStartAnimationManager.PuzzlesStartPre(itemObj);
            });
        }

        Tweener gameStartTweener = mGameStartControl.transform
                                   .DOScale(new Vector3(1, 1, 1), mPrependTime + mRunTime)
                                   .OnComplete(delegate()
        {
            mGameStartControl.gameStart();
        });
    }
Beispiel #5
0
 void Update()
 {
     if (!isPlayBGMClip() && isOpenAudio.Equals(EnabledEnum.ON) && listBGMInfo != null)
     {
         if (playWay.Equals(AudioPlayWayEnum.Single_Cycle))
         {
             playBeforeBGMClip();
         }
         else if (playWay.Equals(AudioPlayWayEnum.Random_Play))
         {
             int randomPosition = DevUtil.getRandomInt(0, listBGMInfo.Count - 1);
             playBGMClip(listBGMInfo[randomPosition]);
         }
     }
 }
    /// <summary>
    /// 设置是否选中
    /// </summary>
    /// <param name="isSelect"></param>
    public void setIsSelect(bool isSelect)
    {
        this.isSelect = isSelect;
        //设置碰撞
        setIsTrigger(isSelect);
        //设置层级
        int sortingOrder;

        if (isSelect)
        {
            sortingOrder = 32767;
        }
        else
        {
            sortingOrder = DevUtil.getRandomInt(0, 30000);
        }
        setSortingOrder(sortingOrder);
    }
    private void changeAnim()
    {
        int            listCount         = mListObj.Count;
        List <Vector3> otherListPosition = new List <Vector3>();

        for (int i = 0; i < listCount; i++)
        {
            otherListPosition.Add(mListObj[i].transform.position);
        }
        for (int i = 0; i < listCount; i++)
        {
            GameObject itemObj = mListObj[i];
            Transform  itemTF  = itemObj.transform;

            //设置层级
            JigsawContainerCpt containerCpt = itemTF.GetComponent <JigsawContainerCpt>();
            if (containerCpt == null)
            {
                continue;
            }
            containerCpt.setSortingOrder(listCount - i);

            int     changeRandom   = DevUtil.getRandomInt(0, otherListPosition.Count - 1);
            Vector3 changePosition = otherListPosition[changeRandom];
            itemTF
            .DOMove(changePosition, changeTime)
            .SetDelay(mPrependTime)
            .OnComplete(delegate() {
                GameStartAnimationManager.PuzzlesStartPre(itemObj);
            });
            otherListPosition.Remove(changePosition);
        }

        Tweener gameStartTweener = mGameStartControl.transform
                                   .DOScale(new Vector3(1, 1, 1), changeTime + mPrependTime)
                                   .OnComplete(delegate()
        {
            mGameStartControl.gameStart();
        });
    }
Beispiel #8
0
    public static void StartAnimation(GameStartControl gameStartControl, List <GameObject> listObj)
    {
        int animInt = DevUtil.getRandomInt(1, 6);
        GameStartAnimationEnum animEnum = (GameStartAnimationEnum)animInt;

        BaseGameStartAnimation animation = null;

        if (animEnum.Equals(GameStartAnimationEnum.Closure_Dispersed))
        {
            animation = new GameStartClosureDispersed(listObj, gameStartControl);
        }
        else if (animEnum.Equals(GameStartAnimationEnum.Decompose_Rotate))
        {
            animation = new GameStartDecomposeRotate(listObj, gameStartControl);
        }
        else if (animEnum.Equals(GameStartAnimationEnum.Change))
        {
            animation = new GameStartChange(listObj, gameStartControl);
        }
        else if (animEnum.Equals(GameStartAnimationEnum.Dispersed))
        {
            animation = new GameStartDispersed(listObj, gameStartControl);
        }
        else if (animEnum.Equals(GameStartAnimationEnum.Funnel))
        {
            animation = new GameStartFunnel(listObj, gameStartControl);
        }
        else if (animEnum.Equals(GameStartAnimationEnum.CircularRun))
        {
            animation = new GameStartCircularRun(listObj, gameStartControl);
        }
        if (animation != null)
        {
            animation.startAnim();
        }
    }
    /// <summary>
    /// 比较相邻拼图碎片的凹凸情况 获取自身的凹凸情况
    /// </summary>
    /// <param name="jigsawBean"></param>
    /// <returns></returns>
    protected JigsawBulgeEnum compareBulge(JigsawBean compareJigsaw, JigsawStyleNormalEdgeEnum edgeEnum)
    {
        if (compareJigsaw == null)
        {
            return(JigsawBulgeEnum.Smooth);
        }
        //获取相邻拼图的凹凸情况
        JigsawBulgeEnum[] compareBulgeList = compareJigsaw.ListBulge;
        if (compareBulgeList == null || compareBulgeList.Length != 4)
        {
            int randonBulge = DevUtil.getRandomInt(1, 2);
            if (randonBulge == 1)
            {
                return(JigsawBulgeEnum.Bulge);
            }
            else
            {
                return(JigsawBulgeEnum.Sunken);
            }
        }

        int bulgeposition;

        if (edgeEnum == JigsawStyleNormalEdgeEnum.Left)
        {
            bulgeposition = 2;
        }
        else if (edgeEnum == JigsawStyleNormalEdgeEnum.Above)
        {
            bulgeposition = 3;
        }
        else if (edgeEnum == JigsawStyleNormalEdgeEnum.Right)
        {
            bulgeposition = 0;
        }
        else if (edgeEnum == JigsawStyleNormalEdgeEnum.Below)
        {
            bulgeposition = 1;
        }
        else
        {
            return(JigsawBulgeEnum.Smooth);
        }


        JigsawBulgeEnum compareBulgeEnum = compareBulgeList[bulgeposition];

        if (compareBulgeEnum == JigsawBulgeEnum.Smooth)
        {
            return(JigsawBulgeEnum.Smooth);
        }
        else if (compareBulgeEnum == JigsawBulgeEnum.Bulge)
        {
            return(JigsawBulgeEnum.Sunken);
        }
        else if (compareBulgeEnum == JigsawBulgeEnum.Sunken)
        {
            return(JigsawBulgeEnum.Bulge);
        }
        else
        {
            return(JigsawBulgeEnum.Smooth);
        }
    }
Beispiel #10
0
 /// <summary>
 /// 播放合并音乐片段
 /// </summary>
 /// <param name="onClickEnum"></param>
 public static void playSoundClipForMerge()
 {
     playSoundClip(listMergeClip[DevUtil.getRandomInt(0, 3)]);
 }