유니티

유니티 - 2D Sprite를 이용한 체력바(게이지바) 구현하기

bugmin 2024. 5. 30. 22:03

2D Sprite를 활용하여 체력바(게이지바)를 간단하게 구현하는 방법이 있다.

만일 3D 프로젝트라 2D Sprite가 없는 경우엔 패키지에서 설치하도록 하자

 

먼저 패키지 매니저에서 2D Sprite를 설치한다.

 

프로젝트 뷰에서 2D - Sprites - Square 생성

 

UI - Image 로 체력바가 들어갈 이미지를 만듬

 

 

만든 Square Sprites를 이미지의 Source Image에 넣어준다. 

체력바를 만들것이니 색상을 빨간 색으로 해두면

 

 

체력바를 만들 수 있다.

 

 

이는 이미지 컴포넌트의 Fill Amount가 1일 때의 모습이다.

 

 

만일 Fill Amount가 0이 되면

 

 

빈 게이지가 만들어진다.

 

이 Fill Amount 값을 조절하여 게이지를 구현할 수가 있게 된다.

 

Fill Amount 값은 [0, 1] 사이의 값을 가진다.

 

현재 체력을 최대 체력으로 나누면 [0, 1] 사이의 값을 얻을 수 있다.

 

이 값을 통해 게이지바를 구현을 할 수 있게된다.

 

체력을 값으로 생각하면 체력외에도 마나 게이지 등 다양한 게이지를 만들 수 있을 것이다.

 

현재값을 curValue, 최댓값을 maxValue로 하고 코드를 짜면

 

처음 게임을 시작했을 땐 현재 값이 초기 값(startValue)이 되므로 Start함수서 넣어주고

 

게이지바의 UI 업데이트는 Update 함수서 진행된다.

 

GetPercentage 함수에서는 현재값을 최댓값으로 나누어 [0, 1] 사이의 값을 반환하고 그 값을 받아 uiBar의 fillAmount 에 넣어준다.

이를 Update 함수서 수행하여 매 프레임마다 업데이트 하도록 하였다.

 

Add와 Subtract 함수의 경우 현재값에 value 값을 받아 추가/빼는 함수이다.

Add의 경우 최댓값을 넘으면 안되니 Mathf.Min으로 최댓값(maxValue)을 초과하진 못하게 해두고

Subtract의 경우 최솟값보다 작으면 안되니 Mathf.Max를 통해 최솟값 0 아래로 떨어지지 않게 했다. 

(최솟값이 0보다 떨어질리는 없기에 구태여 minValue를 둘 필요는 없다)

 

이미지 컴포넌트의 fillAmount 의 값을 조절하여 체력바(게이지바)를 조절하는 간단한 방법을 알아보았다.