본문 바로가기

카테고리 없음

12월4일 공부

더보기

using System;
using UnityEngine;
using UnityEngine.UI;

public class Nexus : Unit
{
    public Action OnDestroyNexus;
    public Action OnDamagedNexus;
    public Action OnHealedNexus;
    public NexusSO Data;
    public Slider healthSlider; // Unity Inspector에서 설정하기 위한 Slider 변수
    private float timeSinceLastHeal;
    private float healInterval = 1f;

    private void Update()
    {
        timeSinceLastHeal += Time.deltaTime;

        if (timeSinceLastHeal >= healInterval)
        {
            Healed(5); // 여기서 수치 조절 가능
            OnHealedNexus?.Invoke();
            timeSinceLastHeal = 0f;
        }

        // CurrnetHP를 Slider에 반영
        if (healthSlider != null)
        {
            healthSlider.value = CalculateHealthPercentage();
        }
    }

    private void Awake()
    {
        if (Data != null)
        {
            MaxHP = Data.MaxHP();
            CurrnetHP = MaxHP;
        }
    }

    public override void Damaged(int dmg)
    {
        base.Damaged(dmg);

        if (CurrnetHP <= 0)
        {
            OnDestroyNexus?.Invoke();
            Destroy(this.gameObject);
        }
        OnDamagedNexus?.Invoke();
    }

    public override void Healed(int heal)
    {
        base.Healed(heal); 

        OnHealedNexus?.Invoke();
    }

    // 현재 체력의 백분율을 계산
    private float CalculateHealthPercentage()
    {
        return(float) CurrnetHP / MaxHP;
    }
}

체력 슬라이드를 적용 시키기 위해 슬라이더를 만들고 스크립트를 수정해 줬습니다.

 return(float) CurrnetHP / MaxHP; 여기에서 return"(float)" 를 추가해줬더니 제대로 잘 적용됐습니다.

 

이렇게 만든 슬라이더를 적용시켜주고

 

 

벨류를 1로 설정해주면 넥서스체력이 닳는 순간 슬라이더도 줄어들게 됩니다.