Hp bar 를 만들고 싶은 캐릭터에 UI -> Image 생성

Canvas 의 Render Mode 를 World Space 로 변경(캐릭터 아래에 Hp bar 를 붙여주기 위해)

Canvas 의 Rect Transform 조절 (원하는 Hp bar 크기)

Image 의 Rect Transform -> Anchor Presets -> 'shift' + 'alt' 누른 상태에서 제일 우측하단 클릭

Canvas 위치 조절

Image 를 복사해서 하나는 Hp bar 의 최대 체력인 "Back" 다른 하나는 Hp bar 의 현재 체력인 "Front"(순서를 "Back" -> "Front" 순으로 해야 Front 가 위로 올라옴)

"Front" 의 Anchors -> Pivot -> X: 0(현재 체력의 기준이 중앙에서 제일 왼쪽으로 변경되어 크기를 조절하면 제일 오른쪽 부터 줄어들게 됨)

"Front" 색상 변경

"Front" -> Scale -> X: 0(0에서부터 1로 채워주기 위해 처음을 0으로 설정)

미리 만들어 놓은 캐릭터와 밥이 충돌하면 체력이 차오르게 스크립트 작성(Hp bar 와 관련이 없는 내용은 지웠음)
public RectTransform front;
float full = 5.0f; // 최대 체력
float energy = 0.0f; // 현재 체력
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("Food"))
{
if(energy < full)
{
energy += 1.0f; // 체력 +1
front.localScale = new Vector3(energy / full, 1.0f, 1.0f); // 전체 체력에 비례해서 에너지 만큼 체력 채우기
}
}
}
이 스크립트를 캐릭터 오브젝트에 드래그 앤 드롭 -> "Front" 에 "Front" 이미지 드래그 앤 드롭

실행 후 확인

이때까지 두 물체가 충돌할 때 OnCollisionEnter2D() 함수를 사용하였다.
하지만 이 함수는 물체의 Body Type 이 Dynamic 일 때만 사용이 가능하다.

물체에 중력의 영향이 필요 없을 때엔 Body Type 을 Kinematic 으로 변경해주어야 한다.

이렇게 변경하면 OnCollisionEnter2D() 함수를 사용할 수 없다.
대신 OnTriggerEnter2D() 함수를 사용하면 된다.
사용 방법은 OnCollisionEnter2D() 함수를 사용할 때와 같다.
다만, 서로 충돌하는 물체의 Collider 에 Is Trigger 에 체크해주어야 한다.
