-
Notifications
You must be signed in to change notification settings - Fork 2
develop AttackedPlayer
Sanguk Lee edited this page Jan 12, 2023
·
3 revisions
- 임시로 플레이어와 적이 될 도형을 각각 다른 형태로 생성
- Canvas 생성 후 그 안에 Slider 생성 및 Handle Slide Area 삭제
- 만든 Silder에서 Interactable은 체크 해제를 해준다. 클릭으로 체력바를 움직이지 못하게 하기 위해서다.
- Slider의 stretch와 Scale은 아래와 같이 설정한다.
- Slider > Background는 HP가 깎인 정도를 나타내는 색이다. 사실상 체력 바의 배경이다. 시안성이 좋은 색으로 선택하는 것이 좋다.
- Slider > Fill Area의 Rect Transform를 아래와 같이 수정한다.
- Slider > Fill Area > Fill의 Inspector를 아래와 같이 수정한다.
- 만든 Slider를 Prefabs 폴더와 드래그 앤 드랍하여
using UnityEngine;
using UnityEngine.UI;
public class PlayerHP : MonoBehaviour
{
public GameObject hpBarPrefab; //Instantiate 메서드로 복제할 프리펩을 담을 변수
public Vector3 hpBarOffset = new Vector3(0, -0.65f, 0); // Player를 기준으로 체력바를 표시할 좌표
public Canvas hpBarCanvas; // Slider가 들어갈 UI Canvas
public Slider hpBarSlider; // Slider의 초기 설정, HP 갱신에 사용할 Slider를 담을 변수
private GameObject hpBar; // hpBarPrefab을 저장할 변수
public float hp = 100;
public int maxHP = 100; // HP 최댓값 변수
public float damage = 0.1f;
void Start()
{
// 위치 + offset에 hpBarPrefab 생성하기
hpBar = Instantiate<GameObject>(hpBarPrefab, hpBarCanvas.transform);
var _hpbar = hpBar.GetComponent<HealthPointBar>();
_hpbar.player = this.gameObject.transform;
_hpbar.offset = hpBarOffset;
hpBarSlider.gameObject.SetActive(true);
}
void Update()
{
}
void OnTriggerStay2D(Collider2D other)
{
if (hp > 0)
{
hp -= damage;
hpBar.GetComponent<Slider>().value = hp / maxHP;
}
}
}