프로그래머/Unity 유니티

Unity_캐릭터(2D)_HPbar

FourthWay 2023. 3. 7. 23:54
728x90
반응형

안녕하세요

 

오늘은 요즘 학원 프로젝트에서 UI부분은 맞고 있는데 UI부분 중 HPbar에 대한 포스팅을 하고자 합니다.

 

우선 2D로 진행되며, 2D캐릭터 밑에 HPbar가 있으며, 화면상에서는 보이지 않지만

 

Space bar 를 누르면 HP가 줄어들도록 구성하였습니다.

우측 하단에 보시면 Space Bar를 입력하고 작동이 되고 있는 걸 확인할 수 있는 Debug를 보실 수 있고

 

가운데 2D캐릭터의 HPbar가 줄어드는 걸 볼 수 있습니다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class HP : MonoBehaviour
{
    [SerializeField]
    private Slider hpbar;

    private float maxHp = 100;
    private float curHp = 100;

    void Start()
    {
        hpbar.value = (float)curHp / (float)maxHp;
    }

    void Update()
    {
        
        if(Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log($"GetKeyDown:{KeyCode.Space}");
            curHp -= 10;
        }

        Handle();
    }
    private void Handle()
    {
        hpbar.value = (float)curHp / (float)maxHp;
    }
}

유니티에서 UI - Slider 를 이용해서 만들었으며

위 사진과같이 하위 메뉴에서 Handle을 꺼주고 작업을 하였습니다.

HP 스크립트의 경우 Canvas에 적용을 시켜주었고, HPbar에 Slider_HP를 적용해주었습니다.

Slider의 경우 value의 값 즉 HP전체가 0~1 사이의 값으로 적용이 되기 때문에 

 

hpbar.value = (float) curHp / (float) maxHp; 현재 HP / 전체 HP

 

로 적용을 해줘서

 

private float maxHp = 100;
private float curHp = 100;

 

전체 HP에 100을 적용시켜 주었고

 

 if(Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log($"GetKeyDown:{KeyCode.Space}");
            curHp -= 10;
        }

 

를 통해서 Space 바를 눌렀을 때 curHp 현재 HP가 -10이 되도록 해주었습니다.

728x90
반응형