(유니티) player를 따라가는 HP바

티원·2025년 11월 1일

HP바 프리팹 만드는법 동영상 시연

플레이어를 따라가는 HP바 기능

구조

코드

A를 누르면 hp가 1씩줄고, Player 위치를 이동시키면 hp바가 따라감
1. UIHpBarPlayer.cs

public class UIHpBarPlayer : MonoBehaviour
{
    [SerializeField] private float _gap = 1.0f;
    [SerializeField] Image _hpBarImage;
    [SerializeField] PlayerScript _player;
    Vector3 _gapPos;
    Camera _camera;
    private float _maxHp;

    private void Awake()
    {
        _camera = Camera.main;
        SetGapPos(_gap); //_gapPos 수정
    }
    public void SetGapPos(float gapValue)
    {
        _gapPos = Vector3.up * gapValue; //해당부분 left, up, forward 등으로 바꾸면서 위치 조절
    }
    void Update()
    {
        MoveHpVar();
        SetHpVar();
    }

    private void MoveHpVar() //HP바 위치 변경
    {
        if (_player != null)
        {
            Vector3 movePos = _player.transform.position + _gapPos;
            transform.position = _camera.WorldToScreenPoint(movePos);
        }
    }
    private void SetHpVar() //player체력에 맞게 체력바 설정
    {
        _hpBarImage.fillAmount = _player.GetHpRatio();
    }
}
  1. PlayerScript.cs
public class PlayerScript : MonoBehaviour
{
    [SerializeField] private float _playerMaxHp = 5.0f;
    private float _playerCurrentHp;
    public float PlayerCurrentHp => _playerCurrentHp;
    private void Awake()
    {
        _playerCurrentHp = _playerMaxHp;
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            _playerCurrentHp = Mathf.Max(0, _playerCurrentHp - 1);
            Debug.Log(_playerCurrentHp);
        }
    }
    public float GetHpRatio() //남은 체력 비율
    {
        return _playerCurrentHp / _playerMaxHp;
    }
}

0개의 댓글