체력 바
Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 60개 중 10번째.
줄어드는 막대는 Image Type이 Filled로 설정된 UI Image입니다. 이 설정은 Image에 Source Image가 지정된 경우에 표시되며, None이면 Inspector에서 숨겨집니다. Fill Method를 Horizontal로, Fill Origin을 Left로 설정하면 막대가 왼쪽 끝을 향해 줄어들고, 0부터 1까지의 fillAmount는 막대가 얼마나 채워져 그려지는지를 나타냅니다. 뒤에 있는 어두운 Image는 비어 있는 부분을 보여 줍니다. Unity는 fillAmount의 범위를 제한하므로, 1.4는 막대를 가득 채워 그리고 -0.2는 빈 막대를 그립니다.
fillAmount는 남은 체력의 비율입니다. 즉, 체력을 최대 체력으로 나눈 값입니다. int 필드끼리 계산하면 정수 나눗셈이 되어 350 / 500은 0이므로, 먼저 한쪽을 float으로 변환하세요. Image는 UnityEngine.UI에 있습니다. 이 보스 체력 막대는 공격을 받을 때마다 갱신됩니다.
public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;
public void Hit(int damage)
{
bossHp = Mathf.Max(bossHp - damage, 0);
bossBar.fillAmount = (float)bossHp / bossMaxHp; // 350 / 500 = 0.7
}막대의 색상도 체력에 따라 바뀌게 할 수 있습니다. bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount);를 사용하면 막대가 가득 찼을 때는 초록색이고, 비어 갈수록 빨간색으로 변합니다.
챌린지
쉬움기사의 방패와 체력을 두 개의 막대에 표시하세요.
ShowBars()를 작성하세요:shieldBar.fillAmount = (float)shield / maxShield;를 작성하고,healthBar에도hp와maxHp를 사용해 같은 방식으로 작성하세요.Start()에서 호출하세요.TakeDamage에서 방패가Mathf.Min(amount, shield)만큼 피해를 받고, 나머지는hp에서 차감되도록 하세요. 체력은 0보다 낮아지지 않습니다. 그런 다음ShowBars()를 호출하세요.
‘플레이’를 누르고 가시에 올라서세요. 방패 막대가 먼저 비워집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using UnityEngine.UI;
public class Knight : MonoBehaviour
{
public Image healthBar;
public Image shieldBar;
public int maxHp = 80;
public int maxShield = 40;
private int hp;
private int shield;
void Start()
{
hp = maxHp;
shield = maxShield;
// 두 막대를 모두 채웁니다
}
public void TakeDamage(int amount)
{
// 실드는 가능한 만큼 피해를 흡수하고, 나머지는 hp에서 차감하되 0 아래로 내려가지 않게 합니다. 그런 다음 두 막대를 모두 표시합니다.
}
}
실제 게임 만들기의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드