分段式显示Boss血条思路

首先写一种比较容易想到的方式 :

比如BOSS有5W血 一管血是1W
大于4万 
大于3万小于4万 
大于2万小于3万 
大于1万小于2万 
小于1万
你分5段来做就好了 5条血叠一起

实例如下:

public void SetBossBlood(IUnitController unit,float damage)

    {
        if (unit.CurrentHp != 0)
        {
            float MaxHp = 50000;
            float cellHp = (MaxHp * 0.2f);
            float cur = unit.CurrentHp - damage;
            if (cur>4*cellHp&&cur <= 5*cellHp)
            {
                //1第一段血条(CurrentHp %cellHp )/ cellHp;
            }
            else if(cur >3*cellHp && cur <=4*cellHp)
            {
                //2第二段血条
            }
            else if(cur >2*cellHp && cur <=3*cellHp)
            {
                //3 大于2万小于3万 
            }
            else if(cur >cellHp && cur <=2*cellHp)
            {
                //4 大于3万小于4万 
            }
            else if(cur <=cellHp && cur >=0f)
            {
                //5 大于4万 
            }
        }

    }

另一种思路其实也差不多,代码简洁写

cell = (总血量/5)//每一管血量值

 n=当前血量/cell 个 

 第n+1个按安 (当前血量%cell )/cell 

实例如下

   /// <summary>
    /// Boss分段血条显示
    /// </summary>
    /// <param name="unit">被攻击的boss</param>
    /// <param name="damage">伤害</param>
    /// <param name="bossIndx">被攻击的是第几个boss</param>

 public void SetBossBlood2(IUnitController unit, float damage,int bossIndx)
    {
        
        int n = 0;
        List<Image> blood = new List<Image>();
        if (bossIndx == 0)
        {  
            blood = blood01List;
        }
        else
        {
            blood = blood02List;          
        }


        float cellHp = (unit.MaxHp * 0.2f);
        float cur = unit.CurrentHp - damage;
        n = (int)(cur / cellHp);//血条从最上面一层开始(4-n)
        Debug.Log("n =" + n);
        blood[(4 - n)].fillAmount = (float)(cur % cellHp) / cellHp;


        for (int i=0;i<5;i++)
        {
            if(i< (4-n)) //fillAmount =0的全部关掉
            {
                blood[i].gameObject.SetActive(false);
            }
        }
    }


猜你喜欢

转载自blog.csdn.net/sun1018974080/article/details/77896823
今日推荐