Skip to content

develop AttackedPlayer

Sanguk Lee edited this page Jan 12, 2023 · 3 revisions

준비

  • 임시로 플레이어와 적이 될 도형을 각각 다른 형태로 생성
  • Canvas 생성 후 그 안에 Slider 생성 및 Handle Slide Area 삭제

체력 바 만들기

  1. 만든 Silder에서 Interactable은 체크 해제를 해준다. 클릭으로 체력바를 움직이지 못하게 하기 위해서다.
  2. Slider의 stretch와 Scale은 아래와 같이 설정한다.

image

  1. Slider > Background는 HP가 깎인 정도를 나타내는 색이다. 사실상 체력 바의 배경이다. 시안성이 좋은 색으로 선택하는 것이 좋다.
  2. Slider > Fill Area의 Rect Transform를 아래와 같이 수정한다.

image

  1. Slider > Fill Area > Fill의 Inspector를 아래와 같이 수정한다.

image

  1. 만든 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;
        }
    }
}
Clone this wiki locally