인스펙터 창에서는 플레이어에게 적이 피해를 받고 있지만, 실제로는 눈에 보이지 않기 때문에 적의 체력 HP바를 만들어보기로 했다.

Canvas 생성 -> World Space 전환이 Canvas를 적 오브젝트의 자식 오브젝트로 넣어준다, 적 오브젝트를 따라다녀야 하기 때문
EnemyCanvas의 Rotation y를 조절해준다. (Enemy가 바라보는 방향으로 = 180)
EnemyCanvas 하위에 UI - Slider 추가 및 적절하게 크기 조절, 하위 오브젝트인 'Handle Slide Area' 삭제
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // Ui용
public class Enemy : MonoBehaviour
{
public float hp = 100; //적 체력
public Slider hpBar; // 적 체력바
void Damaged(float damage)
{
hp -= damage; // 공격받은 데미지만큼 체력 감소
// 감소한 체력을 체력바에 표시
hpBar.value = hp;
}
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}
using UnityEngine.UI; : UI 관련 클래스 사용용
public Slider hpBar; : 적 체력바 슬라이더 변수 선언
hpBar.value = hp; : 적 체력바 슬라이더의 value와 적 hp를 정의하여 연결

Hp Bar Slider Ui 오브젝트를 부여2D라면 어디서 바라보든 hp바가 평면으로 잘 보이겠지만 현재 연습 환경은 3d이기에
플레이어의 시점에서는 어느 방향으로 보아도 항상 평면으로 보여야 한다.
여기서는 적의 Canvas 안에 부여하여 카메라가 바라보는 방향과 (오브젝트를 부여한) 적이 서로 바라보게 하는 스크립트가 필요하다.
이를 Billboard 라고 부른다고 한다.
예시) Billboard 스크립트
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Billboard : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
// 카메라와 자신이 서로 바라보게 설정 or 카메라가 바라보는 방향대로 내가 바라보는 방향 설정 (같은 뜻)
transform.forward = Camera.main.transform.forward;
}
}

Canvas에 부여해야 한다. (방향을 회전 시킬 것이기 때문에)
원하는 방향으로 잘 적용된 모습
이 Billboard 관련 코드는 적이 플레이어어 방향으로 이동, 회전 등에 사용 될 수도 있다.