[Unity] 2D HpBar(체력바), Slider

Mando_727·2023년 8월 3일
0

Unity

목록 보기
2/6

2d HpBar Slider

  • 오늘은 사진과 같이 2D 게임에서 hpbar를 구현해보겠습니다.
  • 오브젝트에 Canvas - Slider를 추가해줍니다.
  • Canvas에서 Render Mode를 World Space로 바꿔줍니다.
  • 스크린 공간 - 오버레이(Screen Space - Overlay)

    UI요소가 화면에서 씬의 위에 렌더링됩니다.
  • 스크린 공간 - 카메라(Screen Space - Camera)

    오버레이와 유사하지만 카메라를 항상 따라다니게 할 수 있어 지정된 카메라에 맞는 UI화면 구성에 사용됩니다.
  • 월드 공간(World Space)

    캔버스는 씬에 있는 다른 오브젝트처럼 동작합니다. 캔버스의 크기는 사각 트랜스폼을 사용하여 수동으로 설정할 수 있으며 UI요소는 3D배치에 기반하여 씬의 다른 오브젝트의 앞 또는 뒤에 렌더링됩니다.

  • Direction으로 오른쪽으로 왼쪽으로 설정하고 Value를 통해 아래와 같이 hp이미지를 조절할 수 있습니다.
    (이때, 초록 - Fill,회색 - BackGround로 변경해주세요.)

  • 마지막으로 스크립트를 추가하면 완성입니다. ㅎ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BaseController : MonoBehaviour
{
    [SerializeField]
    private Slider HPbar;
    
    public float MaxHp = 30;
    public float CurHp = 30;

    void Start()
    {
        HPbar.value = (float)CurHp / (float)MaxHp; //hp 초기화
    }
    void Update()
    {
        UpdateHP();
    }
    private void UpdateHP()
    {
        HPbar.value = Mathf.Lerp(HPbar.value, (float)CurHp / (float)MaxHp, 
        Time.deltaTime * 10);
    }
    private void OnCollisionEnter2D(Collision2D other)
    {
        //Enemy Tag를 가진 오브젝트와 충돌했을 시
        if (other.gameObject.CompareTag("Enemy"))
        {
            CurHp -= 1;
        }

    }
}

0개의 댓글