1 분 소요

이 글은 유튜브 Sebastian Graves Create Dark Souls를 보고 따라 만들면서 헷갈리는 부분을 정리한 글입니다.

체력바 추가

canvus에 Slider 컴포넌트를 통해 체력바를 추가함.

image

image

image


HealthBar 스크립트 추가

slider의 수치를 조정하는 HealthBar스크립트를 추가해준다.

using UnityEngine.UI;

public class HealthBar : MonoBehaviour
{
    public Slider slider;
    private void Start()
    {
        slider = GetComponent<Slider>();
    }
    public void SetMaxHealth(int maxHealth)
    {
        slider.maxValue = maxHealth;
        slider.value = maxHealth;
    }

    public void SetCurrentHealth(int health)
    {
        slider.value = health;
    }
}


Health Bar에 스크립트를 추가해준다.

image


PlayerStats 스크립트 추가

플레이어 능력치와, 데미지 처리를 구현하는 PlayerStats스크립트를 추가한다.

public class PlayerStats : MonoBehaviour
{
    public int healthLevel = 10;
    public int maxHealth;
    public int currentHealth;

    public HealthBar healthbar;

    AnimatorHandler animatorHandler;

    private void Awake()
    {
        animatorHandler = GetComponentInChildren<AnimatorHandler>();
    }

    private void Start()
    {
        maxHealth = SetMaxHealthFromHealthLevel();
        currentHealth = maxHealth;
        healthbar.SetMaxHealth(maxHealth);
    }

    private int SetMaxHealthFromHealthLevel()
    {
        maxHealth = healthLevel * 10;
        return maxHealth;
    }

    public void TakeDamage(int damage)
    {
        currentHealth = currentHealth - damage;

        healthbar.SetCurrentHealth(currentHealth);

        animatorHandler.PlayTargetAnimation("Damage_01", true);

        if(currentHealth <= 0)
        {
            currentHealth = 0;
            animatorHandler.PlayTargetAnimation("Dead_01", true);
        }
    }
}

PlayerDamage 스크립트

플레이어에게 데미지를 가하는 간단한 스크립트를 만든다.

public class PlayerDamage : MonoBehaviour
{
    public int damage = 25;
    private void OnTriggerEnter(Collider other)
    {
        PlayerStats playerStats = other.GetComponent<PlayerStats>();

        if(playerStats != null )
        {
            playerStats.TakeDamage(damage);
        }
    }
}


이 스크립트를 아무 오브젝트에 넣고 isTrigger를 활성화해준다.

image

애니메이션 추가

피격 애니메이션과 사망 애니메이션을 추가해준다. 사망의 경우는 Empty로 연결해주지 않는다.

image

결과

ezgif com-optimize

배운점

  • slider의 value를 적절하게 조정하는 방법을 알 수 있었다.

댓글남기기