/// <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)); }
/// <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(); }); }
/// <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(); }); }
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(); }); }
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); } }
/// <summary> /// 播放合并音乐片段 /// </summary> /// <param name="onClickEnum"></param> public static void playSoundClipForMerge() { playSoundClip(listMergeClip[DevUtil.getRandomInt(0, 3)]); }