플레이어를 따라가는 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();
}
}
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;
}
}