Ejemplo n.º 1
0
    /// <summary>
    /// 创建卡片
    /// </summary>
    /// <param name="position"></param>
    /// <param name="itemType"></param>
    /// <param name="objContainer"></param>
    /// <returns></returns>
    public GameObject CreateCardItem(int position, ItemMiniGameDebateCardCpt.DebateCardTypeEnun itemType, GameObject objContainer)
    {
        GameObject    objItem = Instantiate(objContainer, objDebateCardModel);
        RectTransform rtfItem = (RectTransform)objItem.transform;

        //初始默认不可点击
        ItemMiniGameDebateCardCpt cardItem = objItem.GetComponent <ItemMiniGameDebateCardCpt>();

        cardItem.ClosePointerListener();
        //设置初始透明度
        CanvasGroup cgItem = objItem.GetComponent <CanvasGroup>();

        cgItem.alpha = 0;

        if (objContainer == objUserDebateCardContainer)
        {
            cardItem.SetData(itemType, 1);
            rtfItem
            .DOLocalMoveY(120, 1)
            .From()
            .SetEase(Ease.OutBack)
            .SetDelay(position * 0.2f)
            .OnStart(
                delegate()
            {
                cgItem.alpha = 1;
                AudioHandler.Instance.PlaySound(AudioSoundEnum.GetCard);
            })
            .OnComplete(
                delegate()
            {
                cardItem.OpenPointerListener();
            });
            miniGameData.listUserCard.Add(cardItem);
        }
        else if (objContainer == objEnemyDebateCardContainer)
        {
            cardItem.SetData(itemType, 2);
            rtfItem
            .DOLocalMoveY(120, 1)
            .From()
            .SetEase(Ease.OutBack)
            .SetDelay(position * 0.2f)
            .OnStart(
                delegate()
            {
                cgItem.alpha = 1;
            })
            .OnComplete(
                delegate()
            {
                cardItem.OpenPointerListener();
            });
            miniGameData.listEnemyCard.Add(cardItem);
        }
        return(objItem);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 创建战斗卡牌
    /// </summary>
    /// <param name="userCard"></param>
    /// <param name="enemyCard"></param>
    public void CreateCombatAnim(
        ItemMiniGameDebateCardCpt userCard, ItemMiniGameDebateCardCpt enemyCard,
        ItemMiniGameDebateCardCpt winnerCard, ItemMiniGameDebateCardCpt loserCard,
        float preCombatTime, float combatTime)
    {
        enemyCard.transform.SetParent(objCombatContainer.transform);
        enemyCard.ClosePointerListener();
        enemyCard.transform.DOMove(objCombatEnemyPosition.transform.position, preCombatTime).OnComplete(delegate()
        {
            enemyCard.transform.DOMove(objCombatEnemyEndPosition.transform.position, combatTime).SetEase(Ease.InOutBack);
        });

        userCard.transform.SetParent(objCombatContainer.transform);
        userCard.ClosePointerListener();
        userCard.transform.DOMove(objCombatUserPosition.transform.position, preCombatTime).OnComplete(delegate()
        {
            userCard.transform.DOMove(objCombatUserEndPosition.transform.position, combatTime).SetEase(Ease.InOutBack).OnComplete(delegate()
            {
                if (winnerCard == null || loserCard == null)
                {
                    AudioHandler.Instance.PlaySound(AudioSoundEnum.CardDraw);
                    //平手 都删除
                    CardDestroyAnim(userCard);
                    CardDestroyAnim(enemyCard);
                }
                else
                {
                    //败者先删除动画
                    CardDestroyAnim(loserCard);
                    //卡牌特效
                    psCombat.Play();
                    CardDestroyAnim(winnerCard, 1f);
                    //输赢
                    if (userCard == winnerCard)
                    {
                        AudioHandler.Instance.PlaySound(AudioSoundEnum.CardWin);
                    }
                    else
                    {
                        AudioHandler.Instance.PlaySound(AudioSoundEnum.CardLose);
                    }
                }
                //通知动画结束
                if (mCallBack != null)
                {
                    mCallBack.CombatAnimEnd();
                }
            });
        });
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 卡片删除动画
    /// </summary>
    /// <param name="card"></param>
    private void CardDestroyAnim(ItemMiniGameDebateCardCpt card, float delayTime)
    {
        if (card == null)
        {
            return;
        }
        CanvasGroup cgLoser = card.GetComponent <CanvasGroup>();

        card.transform.DOShakePosition(0.2f, 5).SetDelay(delayTime);
        cgLoser.DOFade(0, 0.2f).SetDelay(delayTime);;
        card.transform.DOScale(new Vector3(1.5f, 1.5f, 1.5f), 0.2f).SetDelay(delayTime).OnComplete(delegate()
        {
            Destroy(card.gameObject);
        });
    }
Ejemplo n.º 4
0
    /// <summary>
    /// 选择了卡片 开始战斗
    /// </summary>
    /// <param name="selectCard"></param>
    public void StartCombat(ItemMiniGameDebateCardCpt selectCard)
    {
        if (miniGameData.GetDebateStatus() != MiniGameDebateBean.DebateStatus.Idle)
        {
            return;
        }
        //设置状态为开始战斗
        miniGameData.SetDebateStatus(MiniGameDebateBean.DebateStatus.Combat);
        //获取敌人的卡片
        ItemMiniGameDebateCardCpt enemyCard = GetEnemyCombatCard();

        //检测谁胜利
        CheckCombatWinner(selectCard, enemyCard, out ItemMiniGameDebateCardCpt winner, out ItemMiniGameDebateCardCpt loser);
        //创建战斗动画
        uiMiniGameDebate.CreateCombatAnim(selectCard, enemyCard, winner, loser, preCombatTime, combatTime);
        //从卡堆中移除选择的卡
        miniGameData.listUserCard.Remove(selectCard);
        miniGameData.listEnemyCard.Remove(enemyCard);
        NpcAIMiniGameDebateCpt winnerNpc = null;
        NpcAIMiniGameDebateCpt loserNpc  = null;

        if (winner == null || loser == null)
        {
        }
        else if (selectCard == winner)
        {
            winnerNpc = miniGameBuilder.GetUserCharacter();
            loserNpc  = miniGameBuilder.GetEnemyCharacter();
        }
        else
        {
            winnerNpc = miniGameBuilder.GetEnemyCharacter();
            loserNpc  = miniGameBuilder.GetUserCharacter();
        }
        //创建攻击粒子
        float allComabtTime = preCombatTime + combatTime;

        if (winnerNpc != null && loserNpc != null)
        {
            GameObject objWinEffect  = miniGameBuilder.CreateCombatEffect(winnerNpc.transform.position + new Vector3(0, 0.5f));
            GameObject objLoseEffect = miniGameBuilder.CreateCombatEffect(loserNpc.transform.position + new Vector3(0, 0.5f));

            AnimForCombatEffect(objWinEffect, loserNpc.transform.position + new Vector3(0, 0.5f), allComabtTime);
            AnimForCombatEffect(objLoseEffect, (winnerNpc.transform.position + loserNpc.transform.position) / 2f + new Vector3(0, 0.5f), allComabtTime / 2f);
        }
        //战斗过程
        StartCoroutine(CoroutineForCombat(allComabtTime, winnerNpc, loserNpc));
    }
Ejemplo n.º 5
0
    /// <summary>
    /// 检测胜利者
    /// </summary>
    /// <param name="userCard"></param>
    /// <param name="enemyCard"></param>
    /// <returns></returns>
    public void CheckCombatWinner(
        ItemMiniGameDebateCardCpt userCard, ItemMiniGameDebateCardCpt enemyCard,
        out ItemMiniGameDebateCardCpt winnerCard, out ItemMiniGameDebateCardCpt loserCard)
    {
        ItemMiniGameDebateCardCpt.DebateCardTypeEnun userCardType  = userCard.debateCardType;
        ItemMiniGameDebateCardCpt.DebateCardTypeEnun enemyCardType = enemyCard.debateCardType;
        int result = (int)userCardType - (int)enemyCardType;

        if (result == -1 || result == 2)
        {
            winnerCard = userCard;
            loserCard  = enemyCard;
        }
        else if (result == 0)
        {
            winnerCard = null;
            loserCard  = null;
        }
        else
        {
            winnerCard = enemyCard;
            loserCard  = userCard;
        }
    }
Ejemplo n.º 6
0
 private void CardDestroyAnim(ItemMiniGameDebateCardCpt card)
 {
     CardDestroyAnim(card, 0);
 }