본문 바로가기
유니티/탑 다운 슈팅 게임 만들기

탑다운 슈팅 게임 만들기 #6 – 게임 클리어 목표 및 UI 최종 정리

by 찡사랑방 2024. 11. 13.
728x90
728x90

 

이번 포스팅에서는 게임 클리어 목표를 추가하고, 게임 진행 상황을 나타낼 UI 요소들을 최종 정리해 보겠습니다. 클리어 목표와 함께 진행 상황을 알리는 UI가 더해지면, 플레이어가 게임의 목표를 명확하게 인식할 수 있어 게임의 완성도가 높아질 것입니다.


1. 게임 클리어 목표 설정

플레이어가 특정 조건을 달성하면 게임 클리어 상태로 전환되도록 게임 목표를 설정하겠습니다. 예를 들어, 지정된 수의 적을 처치하면 게임이 종료되며 클리어 화면이 나타나도록 해보겠습니다.

1.1 적 처치 카운트 설정

  1. GameManager 스크립트에 적 처치 카운트를 추가합니다.
using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public static GameManager Instance;

    public GameObject gameOverUI;
    public GameObject gameClearUI; // 게임 클리어 UI 추가
    public int targetKillCount = 10; // 목표 처치 수
    private int currentKillCount = 0;

    void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            Destroy(gameObject);
        }
    }

    public void EnemyKilled()
    {
        currentKillCount++;
        if (currentKillCount >= targetKillCount)
        {
            GameClear();
        }
    }

    public void GameOver()
    {
        Debug.Log("Game Over! Restarting...");
        gameOverUI.SetActive(true);
        Invoke("RestartGame", 2f);
    }

    void GameClear()
    {
        Debug.Log("Game Cleared!");
        gameClearUI.SetActive(true); // 게임 클리어 UI 활성화
        Invoke("RestartGame", 3f); // 3초 후 게임 재시작
    }

    void RestartGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}

 

2. Inspector에서 targetKillCount를 원하는 값으로 설정합니다 (예: 10).

 

1.2 적 처치 시 GameManager에 알리기

EnemyHealth 스크립트에서 적이 사망할 때마다 GameManager EnemyKilled() 메서드를 호출하도록 수정합니다.

  1. EnemyHealth 스크립트의 Die() 메서드를 아래와 같이 수정합니다
void Die()
{
    GameManager.Instance.EnemyKilled(); // 적이 죽을 때 GameManager에 알림
    Destroy(gameObject);
}

 

 

2.이를 통해 적이 사망할 때마다 처치 수가 증가하고, 목표 수에 도달하면 게임 클리어 상태가 됩니다.


2. UI 정리 및 게임 클리어 화면 추가

게임 오버 화면처럼, 게임 클리어 상태를 알리는 UI 텍스트를 추가합니다.

2.1 Game Clear 텍스트 추가

  1. Canvas Text 오브젝트를 추가하고 이름을 GameClearText로 설정합니다.
  2. 텍스트 내용은 **"Congratulations! Game Clear!"**로 설정하고, Font Size Color를 조정하여 시각적으로 강조합니다.
  3. Rect Transform을 중앙에 배치하고 기본적으로 비활성화합니다.

2.2 Game Clear UI 연결

  1. GameManager gameClearUI 필드에 GameClearText를 드래그하여 연결합니다.

3. 현재 진행 상황을 나타내는 UI 추가

플레이어가 목표 처치 수를 얼마나 달성했는지 알 수 있도록 UI 텍스트로 진행 상황을 표시하겠습니다.

3.1 Kill Count 텍스트 추가

  1. Canvas Text 오브젝트를 추가하고 이름을 KillCountText로 설정합니다.
  2. 텍스트 내용을 **"Kills: 0/10"**와 같은 형식으로 설정합니다.
  3. Rect Transform을 화면 상단에 배치하여, 플레이어가 쉽게 확인할 수 있도록 합니다.

3.2 GameManager에서 Kill Count 업데이트

  1. GameManager 스크립트에 KillCountText를 업데이트하는 기능을 추가합니다.
public TMPro.TextMeshProUGUI killCountText; // Kill Count UI 연결을 위한 필드

void Start()
{
    UpdateKillCountText(); // 초기 Kill Count 업데이트
}

public void EnemyKilled()
{
    currentKillCount++;
    UpdateKillCountText(); // 적 처치 시 Kill Count 업데이트

    if (currentKillCount >= targetKillCount)
    {
        GameClear();
    }
}

void UpdateKillCountText()
{
    killCountText.text = $"Kills: {currentKillCount}/{targetKillCount}";
}

 

 

2. Inspector에서 killCountText 필드에 KillCountText를 드래그하여 연결합니다.


4. 테스트 및 조정

  1. Play 모드로 실행
    • 적을 처치할 때마다 Kill Count UI가 갱신되는지 확인합니다.
    • 목표 처치 수에 도달하면 Game Clear UI가 표시되며, 잠시 후 게임이 재시작되는지 확인합니다.
  2. 난이도 조정
    • targetKillCount 값과 적 스폰 속도 등을 조정하여 적절한 난이도로 설정합니다.

5. 정리 및 완성 축하

이로써 탑다운 슈팅 게임의 주요 기능이 모두 구현되었습니다! 이번 포스팅에서는 게임 클리어 목표 UI 정리를 통해 플레이어가 게임의 목표를 이해하고 몰입할 수 있도록 했습니다.

완성된 게임을 기반으로 앞으로는 새로운 기능을 추가하거나, 더 세밀한 난이도 조정과 애니메이션, 사운드를 추가하여 게임을 더욱 발전시킬 수도 있습니다. 축하드리며, 재미있는 게임 개발의 여정을 이어가길 바랍니다!

728x90