|
|
@@ -5,9 +5,17 @@ using UnityEngine.UI;
|
|
|
|
|
|
public class UIHP : MonoBehaviour
|
|
|
{
|
|
|
+ [System.Serializable]
|
|
|
+ public struct HairSize
|
|
|
+ {
|
|
|
+ public float mp;
|
|
|
+ public float size;
|
|
|
+ }
|
|
|
public Image imgHp;
|
|
|
[HideInInspector]
|
|
|
public PlayerController pc;
|
|
|
+ [Header("发量参数")]
|
|
|
+ public List<HairSize> points;
|
|
|
|
|
|
public void Show(int hp, int totalHp)
|
|
|
{
|
|
|
@@ -19,11 +27,36 @@ public class UIHP : MonoBehaviour
|
|
|
{
|
|
|
float ratio = hp / totalHp;
|
|
|
imgHp.fillAmount = ratio;
|
|
|
- ChangeHairSize(ratio);
|
|
|
+ ChangeHairSize(hp);
|
|
|
}
|
|
|
|
|
|
- private void ChangeHairSize(float ratio)
|
|
|
+ //为什么写在这里,因为可以每次引用到蓝耗的函数时直接调用,不需要一行一行加了
|
|
|
+ private void ChangeHairSize(float curMp)
|
|
|
{
|
|
|
+ float ratio = curMp;
|
|
|
+ if (curMp <= points[0].mp)
|
|
|
+ {
|
|
|
+ ratio = ratio * points[0].size / points[0].mp;
|
|
|
+ }
|
|
|
+ else if (curMp > points[points.Count - 1].mp)
|
|
|
+ {
|
|
|
+ ratio -= points[points.Count - 1].mp;
|
|
|
+ ratio = ratio * (1 - points[points.Count - 1].size) / (pc.totalMp - points[points.Count - 1].mp)
|
|
|
+ + points[points.Count - 1].size;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ for (int i = 1; i < points.Count; i++)
|
|
|
+ {
|
|
|
+ if (curMp <= points[i].mp)
|
|
|
+ {
|
|
|
+ ratio -= points[i - 1].mp;
|
|
|
+ ratio = ratio * ((points[i].size - points[i - 1].size) / (points[i].mp - points[i - 1].mp))
|
|
|
+ + points[i - 1].size;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
pc.ani.SetLayerWeight(2, ratio);
|
|
|
}
|
|
|
}
|