コード例 #1
0
    //吃 碰 杠时 判断下一个动画状态 -1表示不做任何动作
    int CheckState(MahjongPrefab card, CardActType type)
    {
        int currenState = card.animator.GetCurrentAnimatorStateInfo(0).fullPathHash;

        if (currenState == GlobalData.ANIMA_GetCard || currenState == GlobalData.ANIMA_OnTriggerEnter ||  currenState == GlobalData.ANIMA_OnTriggerExit || currenState == GlobalData.ANIMA_InsertCard)
        {
            switch (type)
            {
            case CardActType.AnGang:
                return(GlobalData.ANIMA_CloseCard);

            default:
                return(GlobalData.ANIMA_TurnOverCard);
            }
        }
        if (currenState == GlobalData.ANIMA_OutCard)
        {
            return(GlobalData.ANIMA_ChiPengCard);
        }
        if (currenState == GlobalData.ANIMA_TurnOverCard || currenState == GlobalData.ANIMA_ChiPengCard)
        {
            return(-1);
        }
        if (currenState == GlobalData.ANIMA_CardIdle || currenState == GlobalData.ANIMA_CloseCard)
        {
            switch (type)
            {
            case CardActType.AnGang:
                return(-1);

            default:
                return(GlobalData.ANIMA_TurnOverCard);
            }
        }
        return(-1);
    }
コード例 #2
0
    //添加碰 吃  角色 动作类型  牌1   牌2   牌3
    public IEnumerator AddPengChi(UserCard user, CardActType type, MahjongPrefab card1, MahjongPrefab card2, MahjongPrefab card3)
    {
        if (user.mingGangPoint.IsNotFull)
        {
            //预设
            Transform tran = null;
            //分配位置
            Vector3 target = new Vector3();

            //输入检查
            if (!card1.transform || !card2.transform || !card3.transform)
            {
                Debug.Log("<MGameClientAction::AddMingGang>:输入参数为空.");
            }

            switch (type)
            {
            case CardActType.Peng:
                //获取预设
                tran = spawnPool.Spawn("Peng");
                //加入容器并获取分配坐标
                target = user.mingGangPoint.AddItem(tran, GlobalData.PENG_Width);
                break;

            case CardActType.Chi:
                //获取预设
                tran = spawnPool.Spawn("Chi");
                //加入容器并获取分配坐标
                target = user.mingGangPoint.AddItem(tran, GlobalData.CHI_Width);
                break;

            default:
                Debug.Log("<MGameClientAction::AddPengChi>:输入参数过少.");
                break;
            }
            //只使用本地坐标x轴做动画
            tran.position = target + tran.right * .5f;

            //各个牌的位置
            Transform card1Point = tran.GetChild(0);
            Transform card2Point = tran.GetChild(1);
            Transform card3Point = tran.GetChild(2);

            //调整各个牌的缩放
            card1.transform.localScale = card1Point.localScale;
            card2.transform.localScale = card2Point.localScale;
            card3.transform.localScale = card3Point.localScale;

            //下一个动画
            int card1Anima = CheckState(card1, type);
            int card2Anima = CheckState(card2, type);
            int card3Anima = CheckState(card3, type);

            //播放动画
            if (card1Anima != -1)
            {
                card1.animator.Play(card1Anima);
            }
            if (card2Anima != -1)
            {
                card2.animator.Play(card2Anima);
            }
            if (card3Anima != -1)
            {
                card3.animator.Play(card3Anima);
            }

            //移动到预设位置
            iTween.MoveTo(card1.transform.gameObject, card1Point.position, .5f);
            iTween.MoveTo(card2.transform.gameObject, card2Point.position, .5f);
            iTween.MoveTo(card3.transform.gameObject, card3Point.position, .5f);

            //旋转角度调整至预设角度
            card1.transform.rotation = card1Point.rotation;
            card2.transform.rotation = card2Point.rotation;
            card3.transform.rotation = card3Point.rotation;

            //等待预设移动
            yield return(new WaitForSeconds(.5f));

            //绑定到为预设
            card1.transform.SetParent(card1Point);
            card2.transform.SetParent(card2Point);
            card3.transform.SetParent(card3Point);

            //开始预设动作


            //此处可播放特效start

            //特效end
            //开始移动到明杠区域
            iTween.MoveTo(tran.gameObject, target, .5f);
            yield return(new WaitForSeconds(.5f));
        }
        else
        {
            Debug.Log("<MGameClientAction::AddAnGang>: 明杠区域已满.");
        }
    }
コード例 #3
0
    public IEnumerator AddPengChi(UserCard user, CardActType type, MahjongPrefab card1, MahjongPrefab card2, MahjongPrefab card3, IEnumeratorCallback callback)
    {
        yield return(AddPengChi(user, type, card1, card2, card3));

        yield return(callback());
    }
コード例 #4
0
    public IEnumerator AddGang(UserCard user, CardActType type, MahjongPrefab card1, MahjongPrefab card2, MahjongPrefab card3, MahjongPrefab card4, Callback callback)
    {
        yield return(AddGang(user, type, card1, card2, card3, card4));

        callback();
    }