Ejemplo n.º 1
0
    /// <summary>
    /// 切牌动画
    /// </summary>
    /// <param name="wallList"></param>
    /// <param name="dun"></param>
    /// <param name="onComplete"></param>
    public void CutPokerAni(int dun, System.Action onComplete)
    {
        GameObject pokerOne = pokerWall[(2 * dun)];
        GameObject pokerTwe = pokerWall[(2 * dun + 1)];

        //改变顺序  选择距离远的切
        bool tou = dun < (pokerWall.Count / 4); //是否距离头部近

        Debug.Log(string.Format("是否距离头部近:{0}", tou));
        pokerOne.transform.SetSiblingIndex(tou ? (pokerOne.transform.parent.childCount - 1) : 0);
        pokerTwe.transform.SetSiblingIndex(tou ? (pokerOne.transform.parent.childCount - 1) : 1);

        pokerWall.Remove(pokerOne);
        pokerWall.Remove(pokerTwe);
        pokerWall.Insert(tou ? (pokerWall.Count) : 0, pokerOne);
        pokerWall.Insert(tou ? (pokerWall.Count) : 1, pokerTwe);

        //上移
        pokerOne.transform.DOLocalMove(pokerOne.transform.localPosition + new Vector3(0, 120, 0), 0.1f).OnComplete(() =>
        {
            //移动至头尾
            pokerOne.transform.DOLocalMove(dealTran.GetPos(tou ? (pokerWall.Count - 2) : 0) + new Vector3(0, 120, 0), 0.3f).OnComplete(() =>
            {
                //全部归位
                for (int i = 0; i < pokerWall.Count; i++)
                {
                    if (i == pokerWall.Count - 1)
                    {
                        pokerWall[i].transform.DOLocalMove(dealTran.GetPos(i), 0.2f).OnComplete(() =>
                        {
                            if (onComplete != null)
                            {
                                onComplete();
                            }
                        });
                    }
                    else
                    {
                        pokerWall[i].transform.DOLocalMove(dealTran.GetPos(i), 0.2f);
                    }
                }
            });
        });
        pokerTwe.transform.DOLocalMove(pokerTwe.transform.localPosition + new Vector3(0, 120, 0), 0.1f).OnComplete(() =>
        {
            pokerTwe.transform.DOLocalMove(dealTran.GetPos(tou ? (pokerWall.Count - 1) : 1) + new Vector3(0, 120, 0), 0.3f);
        });
    }
Ejemplo n.º 2
0
        /// <summary>
        /// 切牌动画
        /// </summary>
        /// <param name="wallList">牌墙list</param>
        /// <param name="dun">切第几墩 </param>
        /// <param name="onComplete">回调</param>
        public void CutPokerAni(List <MaJiangCtrl_PaiJiu> wallList, int dun, System.Action onComplete)
        {
            MaJiangCtrl_PaiJiu pokerOne = wallList[(2 * dun)];
            MaJiangCtrl_PaiJiu pokerTwe = wallList[(2 * dun + 1)];

            //改变顺序  选择距离远的切
            bool tou = dun < (wallList.Count / 4); //是否距离头部近

            Debug.Log(string.Format("是否距离头部近:{0}", tou));
            pokerOne.transform.SetSiblingIndex(tou ? (pokerOne.transform.parent.childCount - 1) : 0);
            pokerTwe.transform.SetSiblingIndex(tou ?(pokerOne.transform.parent.childCount - 1):1);

            wallList.Remove(pokerOne);
            wallList.Remove(pokerTwe);
            wallList.Insert(tou ? (wallList.Count) : 0, pokerOne);
            wallList.Insert(tou ? (wallList.Count) : 1, pokerTwe);


            //上移
            pokerOne.transform.DOMove(pokerOne.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => {
                //移动至头尾
                pokerOne.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 2) : 0) + new Vector3(0, -15, 0), 0.7f).OnComplete(() => {
                    //全部归位
                    for (int i = 0; i < wallList.Count; i++)
                    {
                        if (i == wallList.Count - 1)
                        {
                            wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f).OnComplete(() => {
                                if (onComplete != null)
                                {
                                    onComplete();
                                }
                            });
                        }
                        else
                        {
                            wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f);
                        }
                    }
                });
            });

            pokerTwe.transform.DOMove(pokerTwe.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => {
                pokerTwe.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 1) : 1) + new Vector3(0, -15, 0), 0.7f);
            });
        }