OldBlueWater/BlueWater/Assets/02.Scripts/Ui/FieldBossHpSlider.cs
NTG 8a2eb81bee Closes #210 보스 체력바 연동
+ 보스방 진입시 보스 전용 Hp UI 추가
+ 전투 플레이어 스킬(검의 왈츠)의 공격할 때 나타나는 파티클의 위치가 랜덤으로 변경되었습니다.
2024-02-16 18:50:48 +09:00

60 lines
1.8 KiB
C#

using System.Collections;
using Sirenix.OdinInspector;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class FieldBossHpSlider : MonoBehaviour
{
[SerializeField] private Slider slider;
[SerializeField] private TMP_Text nameText;
[SerializeField] private Slider damageEffectSlider;
[SerializeField] private float damageEffectSpeed = 0.1f;
[Button("셋팅 초기화")]
private void Init()
{
slider = GetComponent<Slider>();
nameText = transform.Find("NameText").GetComponent<TMP_Text>();
damageEffectSlider = transform.Find("Fill Area/Background/DamageEffectSlider").GetComponent<Slider>();
}
public void SetHpSlider(float maxHp, string bossName)
{
if (!slider || !damageEffectSlider) return;
slider.maxValue = maxHp;
damageEffectSlider.maxValue = maxHp;
slider.value = maxHp;
damageEffectSlider.value = maxHp;
nameText.text = nameText ? bossName : null;
SetActiveHpSlider(true);
}
public void UpdateHpSlider(float value)
{
if (!slider || !damageEffectSlider) return;
StartCoroutine(DamageEffect(value));
}
private IEnumerator DamageEffect(float value)
{
slider.value = value;
while (damageEffectSlider.value > value)
{
damageEffectSlider.value -= damageEffectSpeed;
yield return null;
}
}
public void SetActiveHpSlider(bool value) => gameObject.SetActive(value);
}
}