Files
XMen/Assets/Scripts/UI/Components/BloodSlider.cs
2025-07-10 14:49:53 +08:00

113 lines
3.1 KiB
C#
Raw Blame History

using System.Collections;
using System.Collections.Generic;
using DamageNumbersPro;
using Mirror;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class BloodSlider : MonoBehaviour
{
public Image board;
public Image blood1;
public Image blood2;
public TextMeshProUGUI enemyName;
public GameObject damageUIPre;
public Transform damageUIPos;
private void Start()
{
if(blood1 == null)
return;
blood1.fillAmount = 1;
blood2.fillAmount = 1;
}
// public void CreateDamageUI(float damage, bool criticalHit)
// {
// GameObject damageUI = Instantiate(damageUIPre, transform);
// float offsetX = Random.Range(-120f, 120f);
// float offsetY = Random.Range(-20f, 55f);
// damageUI.transform.localPosition = damageUIPos.localPosition;
// damageUI.GetComponent<DamageUI>().ShowDamage(damage, criticalHit);
//
// float randomScale = Random.Range(0.8f, 1.5f);
//
// CanvasGroup canvasGroup = damageUI.GetComponent<CanvasGroup>();
//
// Sequence sequence = DOTween.Sequence();
//
// // 添加缩小动画
// sequence.Append(damageUI.transform.DOScale(new Vector3(randomScale, randomScale, randomScale), 0.5f));
//
// // sequence.Append(damageUI.transform.DOScale(new Vector3(1f, 1f, 1f), 0.2f));
// // 添加移动动画
// sequence.Join(damageUI.transform.DOLocalMove(damageUIPos.localPosition + new Vector3(offsetX, offsetY, 0), 0.5f));
// sequence.OnComplete(() =>
// {
// canvasGroup.DOFade(0f, 0.1f).OnComplete(() =>
// {
// GameObject.Destroy(damageUI);
// });
//
// });
// // 启动动画
// sequence.Play();
// }
public void CreateDamagePre(float damage, bool criticalHit)
{
GameObject damageUI = Instantiate(damageUIPre, transform);
float offsetX = Random.Range(-100f, 100f);
float offsetY = Random.Range(-40f, 25f);
damageUI.transform.localPosition = damageUIPos.localPosition+new Vector3(offsetX,offsetY,0);
damageUI.GetComponent<DamageUI>().ShowDamage(damage, criticalHit);
// if (criticalHit)
// {
// damageTxt.poolSize += 10;
// }
}
public void SetName(string name)
{
enemyName.text = name;
}
public void SetValue(float value)
{
if (value <= 0)
gameObject.SetActive(false);
else
gameObject.SetActive(true);
blood1.fillAmount = value;
}
public void SetValue2(float currentBlood, float totalBlood)
{
float value = currentBlood / totalBlood;
DOTween.To(() => blood2.fillAmount, x => blood2.fillAmount = x, value, 0.5f);//Ѫ<><D1AA><EFBFBD>
blood1.fillAmount = value;
// if (value <= 0)
// {
// gameObject.SetActive(false);
// }
}
private void Update()
{
transform.parent.GetComponent<Transform>().LookAt(GameInit.Ins.MRCamera.transform);
}
}