728x90
728x90
안녕하세요! 오늘은 게임의 완성도를 높여줄 UI 요소들을 추가해보겠습니다. 플레이어가 체력 상태를 확인할 수 있는 체력바와, 체력이 0이 되었을 때 표시되는 게임 오버 화면을 구현할 거예요. 이로써 게임 플레이의 몰입감과 편의성을 더욱 높여보겠습니다.
1. 플레이어 체력바 만들기
- UI 캔버스 생성
- Hierarchy 창에서 UI > Canvas를 선택하여 새 캔버스를 생성합니다. 이 캔버스는 모든 UI 요소를 포함하는 상위 객체입니다.
- 슬라이더로 체력바 구성
- 캔버스 하위에 UI > Slider를 추가합니다. 이 슬라이더를 플레이어의 체력바로 사용할 것입니다.
- 슬라이더의 Fill Area 속성을 조정하여 체력에 따라 채워지는 영역이 잘 표시되도록 설정합니다.
- HealthBar 스크립트 작성
- Assets > Scripts 폴더에 HealthBar라는 C# 스크립트를 생성하고, Slider 오브젝트에 추가합니다.
- HealthBar 스크립트는 플레이어의 체력 상태를 UI에 반영하는 역할을 합니다.
using UnityEngine;
using UnityEngine.UI;
public class HealthBar : MonoBehaviour
{
public Slider slider;
public void SetMaxHealth(int maxHealth)
{
slider.maxValue = maxHealth;
slider.value = maxHealth;
}
public void SetHealth(int health)
{
slider.value = health;
}
}
4. HealthManager 스크립트와 연결
- 이전에 작성한 HealthManager 스크립트에서 HealthBar를 참조하여, 체력이 감소할 때마다 체력바에 반영되도록 합니다.
using UnityEngine;
public class HealthManager : MonoBehaviour
{
public int maxHealth = 3;
private int currentHealth;
public HealthBar healthBar;
void Start()
{
currentHealth = maxHealth;
healthBar.SetMaxHealth(maxHealth);
}
public void TakeDamage(int damage)
{
currentHealth -= damage;
healthBar.SetHealth(currentHealth);
if (currentHealth <= 0)
{
Die();
}
}
void Die()
{
Debug.Log("Game Over!");
// 추후 게임 오버 화면 표시로 연결
}
}
- Start() 메서드에서 초기 체력을 설정하며, TakeDamage 메서드에서 체력이 감소할 때마다 healthBar의 상태를 업데이트합니다.
2. 게임 오버 화면 만들기
- 게임 오버 텍스트 생성
- Canvas 안에 UI > Text를 추가하여 Game Over 텍스트를 만듭니다. 이 텍스트는 게임 오버 상태에서만 보이도록 설정할 것입니다.
- 텍스트의 Font Size와 Color를 조정하여 눈에 잘 띄게 디자인합니다.
- GameOverManager 스크립트 작성
- GameOverManager라는 새로운 스크립트를 만들고 Game Over Text 오브젝트에 연결합니다.
using UnityEngine;
using UnityEngine.SceneManagement;
public class GameOverManager : MonoBehaviour
{
public GameObject gameOverUI;
public void GameOver()
{
gameOverUI.SetActive(true);
}
public void RestartGame()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
- GameOver() 메서드는 게임 오버 UI를 활성화하고, RestartGame() 메서드는 현재 씬을 다시 로드하여 게임을 리스타트할 수 있게 합니다.
3. HealthManager와 게임 오버 UI 연결
- HealthManager의 Die() 메서드에서 GameOverManager를 호출하여 체력이 0일 때 게임 오버 UI가 나타나도록 연결합니다.
using UnityEngine;
public class HealthManager : MonoBehaviour
{
public int maxHealth = 3;
private int currentHealth;
public HealthBar healthBar;
public GameOverManager gameOverManager;
void Start()
{
currentHealth = maxHealth;
healthBar.SetMaxHealth(maxHealth);
}
public void TakeDamage(int damage)
{
currentHealth -= damage;
healthBar.SetHealth(currentHealth);
if (currentHealth <= 0)
{
Die();
}
}
void Die()
{
Debug.Log("Game Over!");
gameOverManager.GameOver();
}
}
- gameOverManager.GameOver()가 호출되면 게임 오버 UI가 나타납니다.
3. 게임 오버 UI에 버튼 추가
- 재시작 버튼 추가
- Canvas 안에 UI > Button을 추가하고 Restart라는 텍스트를 설정합니다.
- 이 버튼에 GameOverManager의 RestartGame 메서드를 연결하여 게임을 다시 시작할 수 있도록 합니다.
- 버튼 디자인 및 위치 조정
- Restart 버튼의 Font, Color 등을 조정하여 게임 오버 화면과 어울리게 디자인합니다.
- 버튼과 텍스트의 위치를 적절히 배치하여 화면 중앙에 깔끔하게 나타나도록 합니다.
4. 테스트 및 조정
- Play 모드에서 체력바 및 게임 오버 UI 테스트
- 플레이 모드에서 체력이 감소할 때 체력바가 제대로 반영되는지 확인합니다.
- 플레이어의 체력이 0이 되었을 때 Game Over 텍스트와 Restart 버튼이 제대로 나타나는지 확인합니다.
- UI 최적화
- 각 UI 요소의 크기, 위치, 색상 등을 조정하여 게임 화면과 잘 어울리도록 디자인합니다.
728x90
'유니티 > 플랫폼 게임 만들기' 카테고리의 다른 글
유니티로 슈퍼마리오 같은 게임 만들기 #8 - 사운드 추가와 게임 배포하기 (8) | 2024.11.05 |
---|---|
유니티로 슈퍼마리오 같은 게임 만들기 #6 - 캐릭터 애니메이션 추가하기 (0) | 2024.11.04 |
유니티로 슈퍼마리오 같은 게임 만들기 #5 - 적과의 충돌 처리 및 기본 공격 기능 구현 (0) | 2024.10.30 |
유니티로 슈퍼마리오 같은 게임 만들기 #4 – 적 캐릭터 추가와 플레이어 추적 기능 구현 (1) | 2024.10.30 |
유니티로 슈퍼마리오같은 게임 만들기 #3 - 플레이어 점프와 바닥 충돌 구현 (0) | 2024.10.28 |