그리고 꾸준히 계속 감소를해야하다보니 나는
Coroutine을 사용을했다!!
Corutine이란! 일정 시간 간격으로 무언가를 실행하거나, 프레임에 걸쳐 나눠서 작업을 수행하고 싶을 때 사용하는 기능입니다.
대부분 루프를 돌릴때 사용한다라고 많이들 이야기 한다 하더라 그래서 아하 그러면 이런 코드를 작성하면 좋겠다 하면서
public int maxHP = 100; //최대체력
private int currentHP; // 현재체력
public Slider hpSlider; // 체력바 UI
public float damageInterval = 1f; // 몇 초마다 깎을지
public int damagePerTick = 1; // 한번에 깎이는 양
private void Start()
{
currentHP = maxHP; //시작할때 최대 체력으로 설정
UpdateHPUI(); // UIHP 체력표시 업데이트
// 체력 감소 루프 시작
StartCoroutine(DrainHealthOverTime());
}
IEnumerator DrainHealthOverTime() // 일정시간 마다 체력이 줄어드는 코루틴
{
while (currentHP > 0)
{
yield return new WaitForSeconds(damageInterval); // 시간 기다림
TakeDamage(damagePerTick); // 체력감소 적용
}
// HP가 0이면 사망 처리
Debug.Log("체력 소진! 게임 오버");
}
public void TakeDamage(int amount) //체력감소 함수
{
currentHP -= amount;
currentHP = Mathf.Clamp(currentHP, 0, maxHP);
UpdateHPUI();
}
public void Heal(int amount) //체력회복 함수
{
currentHP += amount;
currentHP = Mathf.Clamp(currentHP, 0, maxHP);
UpdateHPUI();
}
private void UpdateHPUI() // 체력 UI 업데이트 함수
{
if (hpSlider != null)
{
hpSlider.value = currentHP;
}
}
일단 체력바도 만들고 변수 선언 해주고 몇초동안 어느정도 양을깎을지 수치 조정해주고
이것저것 다 추가를했다 내가 코드를 작성하면서 느낀게 무조건 내가 주석처리를 해야지 이해도 가고 또 팀원이 내 코드를 보고 합칠때 도움디될거같아서 무조건 주석처리를 습관화 하자 라고 마음을 가졌다
앞으로는 깃허브를 좀 더 공부해야겠다.. 생각많이했다..