+ 전투 플레이어도 피격시 FlashWhite 기능이 추가되었습니다. + 전투 플레이어의 기본 속도 10 -> 7로 변경했습니다. + 보스 및 잡몹의 Collider를 통과할 수 있게 변경했습니다. + 보스의 스킬에 피격되면 튕겨내는 기능을 추가했습니다. + 코뿔소 스킬(EarthquakeWave)가 표시하는 것과 다르게 공격하는 오류를 수정했습니다.
65 lines
1.9 KiB
C#
65 lines
1.9 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 duration = 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)
|
|
{
|
|
var previousHp = slider.value;
|
|
var tick = (previousHp - value) / duration;
|
|
|
|
slider.value = value;
|
|
|
|
while (damageEffectSlider.value > value)
|
|
{
|
|
damageEffectSlider.value -= tick * Time.deltaTime;
|
|
yield return null;
|
|
}
|
|
|
|
damageEffectSlider.value = value;
|
|
}
|
|
|
|
public void SetActiveHpSlider(bool value) => gameObject.SetActive(value);
|
|
}
|
|
} |