自己写的连击文字特效

本文介绍了一种在Unity中实现连击文字特效的方法。通过使用协程控制连击计数显示时间,并根据不同连击数调整视觉表现。文章还涉及了动画播放及连击数的初始化逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#region 处理连击文字特效
    private float comboTimer=0.3f;
    private int comboNumber=0;
    private Coroutine comboCoroutine;

    protected GameObject comboPrefab;
    protected Transform[] comboNumberTransforms;
    protected Transform comboNumberTransform;
    protected SpriteRenderer[] comboNumberSprites;
    protected SpriteRenderer comboHit;
    protected Animator comboAnimator;
    /// <summary>
    /// 播放连击动画
    /// </summary>
    public void PlayComboEffect()
    {
        comboNumber += 1;
        if (comboCoroutine != null)
        {
            StopCoroutine(comboCoroutine);
        }
        comboCoroutine = StartCoroutine(CountComboNumber());
      
        comboAnimator.SetBool("ComboAni",true);
        InitNunber(comboNumber);
    }

    private IEnumerator CountComboNumber()
    {
        
        yield return new WaitForSeconds(comboTimer);
        comboNumber = 0;
        InitNunber(comboNumber);
    }


    void InitNunber(int level)
    {     
        if (level==0)
        {
            comboNumberTransforms[1].GetComponent<SpriteActive>().SetDeActive();
            comboNumberTransforms[2].GetComponent<SpriteActive>().SetDeActive();
            comboNumberTransforms[3].GetComponent<SpriteActive>().SetDeActive();
            comboHit.sprite = null;
        }
        if (level==1)
        {
            comboNumberTransforms[1].GetComponent<SpriteActive>().SetDeActive();
            comboNumberTransforms[2].GetComponent<SpriteActive>().SetDeActive();
            comboNumberTransforms[3].GetComponent<SpriteActive>().SetDeActive();

            comboHit.sprite = DataCenter.Instance.GameData.comboSprites.comboHitSprites[0];
        }
        if (level>1 && level < 10) //一位数
        {
            comboNumberTransforms[2].GetComponent<SpriteActive>().SetDeActive();
            comboNumberTransforms[3].GetComponent<SpriteActive>().SetDeActive();
           
            comboNumberSprites[0].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level];

            comboHit.sprite = DataCenter.Instance.GameData.comboSprites.comboHitSprites[1];
        }
        else if (level>=10 && level < 100) //二位数
        {            
            if (level==10)
            {
                comboNumberTransform.localPosition = new Vector3(comboNumberTransform.localPosition.x-0.25f,comboNumberTransform.localPosition.y,comboNumberTransform.localPosition.z);
            }

            comboNumberTransforms[3].GetComponent<SpriteActive>().SetDeActive();

            comboNumberSprites[0].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level/10];
            comboNumberSprites[1].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level%10];    

            comboHit.sprite = DataCenter.Instance.GameData.comboSprites.comboHitSprites[1];
        }
        else if (level>=100&&level <1000) //三位数
        { 
            if (level==100)
            {
                comboNumberTransform.localPosition = new Vector3(comboNumberTransform.localPosition.x-0.5f,comboNumberTransform.localPosition.y,comboNumberTransform.localPosition.z);
            }

            comboNumberSprites[0].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level/100];
            comboNumberSprites[1].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level/10%10]; 
            comboNumberSprites[2].sprite = DataCenter.Instance.GameData.comboSprites.comboNumberSprites[level%10]; 

            comboHit.sprite = DataCenter.Instance.GameData.comboSprites.comboHitSprites[1];
        }
    }
    #endregion

转载于:https://www.cnblogs.com/qiaogaojian/p/7109541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值