Unity3D_MMO - 체력 (1)

k_hyun·2022년 10월 20일
0

Unity_MMO_Project

목록 보기
27/33

체력바


Slider UI를 사용하여 체력바를 표현하였다.

프리팹으로 만들었다.

UI_HPBar.cs

public class UI_HPBar : UI_Base
{
    public enum GameObjects
    {
        HPBar,
    }

    public override void Init()
    {
        Bind<GameObject>(typeof(GameObjects));
    }

    private void Update()
    {
        Transform parent = transform.parent;
        transform.position = parent.position + Vector3.up * (parent.GetComponent<Collider>().bounds.size.y + 0.4f);
    }
}

HPBar을 바인드하고 플레이어의 콜라이더 위에 배치시켰다.

UI_Manager.cs

public T MakeWorldSpaceUI<T>(Transform parent = null, string name = null) where T : UI_Base
    {
        if (string.IsNullOrEmpty(name))
            name = typeof(T).Name;

        GameObject go = Managers.Resource.Instantiate($"UI/WorldSpace/{name}");
        if (parent != null)
            go.transform.SetParent(parent.transform);

        Canvas canvas = go.GetOrAddCompoent<Canvas>();
        canvas.renderMode = RenderMode.WorldSpace;
        canvas.worldCamera = Camera.main;

        return Util.GetOrAddCompoent<T>(go);
    }

WorldSpaceUI를 위한 코드를 작성하였다.

참고로 UI_HPBar는 씬도 팝업도 아니므로 WorldSpace 폴더에 저장하였다.

PlayerController.cs

void Start()
    {               
        Managers.UI.MakeWorldSpaceUI<UI_HPBar>(transform);
    }        

플레이어에게 UI_HPBar UI를 부착하였다.

실행 결과

UI가 알맞게 생성되었으나 캐릭터와 같이 회전하는 문제가 생겼다.

0개의 댓글