유니티 다크소울 따라만들기 ch_10 체력바
이 글은 유튜브 Sebastian Graves Create Dark Souls를 보고 따라 만들면서 헷갈리는 부분을 정리한 글입니다.
체력바 추가
canvus에 Slider 컴포넌트를 통해 체력바를 추가함.
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에 스크립트를 추가해준다.
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를 활성화해준다.
애니메이션 추가
피격 애니메이션과 사망 애니메이션을 추가해준다. 사망의 경우는 Empty로 연결해주지 않는다.
결과
배운점
- slider의 value를 적절하게 조정하는 방법을 알 수 있었다.
댓글남기기