본문 바로가기
게임 프로그래밍/게임개발 중급

게임개발 중급(29) - 3D 게임 만들기(9)

by jyppro 2023. 5. 20.

3D 게임 만들기(9)

저번에는 아이템의 랜덤위치 리스폰에 대해 알아보았습니다. 이번에는 말했던 것처럼 게이지를 사용해 일정 개수마다 스테이지를 넘어갈 수 있도록 만들어 보겠습니다. 그리고 특정 스테이지 이상을 넘어가면 게임을 클리어하도록 하겠습니다.

 

Stage UI

일단 스테이지를 알려줄 UI를 만들어줍니다. 간단하게 텍스트로만 표현해 줄 것이기 때문에 스코어 텍스트 처럼 만들어주고, 왼쪽 상단에 배치하겠습니다.

UI-배치
UI생성 및 배치

이제 스크립트를 작성하여 아이템을 먹은 갯수와 게이지의 양에 따라 스테이지가 바뀌도록 해주겠습니다. 새로운 스크립트를 만들지 않고 게이지를 컨트롤 했던 GameDirector에 코드를 추가로 작성하겠습니다.

 

 

GameDirector

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // UI를 사용하므로 잊지 않고 추가한다

public class GameDirector : MonoBehaviour
{
    GameObject Gauge;
    GameObject Stage;
    int stageLevel = 1;

    void Start()
    {
        this.Gauge = GameObject.Find("Gauge");
        this.Stage = GameObject.Find("Stage");
    }

    public void DecreaseHp()
    {
        if(this.stageLevel == 1)
        {
            this.Gauge.GetComponent<Image>().fillAmount -= 0.1f; // 10개먹으면 다음 스테이지
        }
        else if(this.stageLevel == 2)
        {
            this.Gauge.GetComponent<Image>().fillAmount -= 0.05f; // 20개 먹으면 다음 스테이지
        }
        else
        {
            this.Gauge.GetComponent<Image>().fillAmount -= 0.025f; // 40개 먹으면 게임 클리어
        }
        
    }

    public void StageChange()
    {
        if(this.Gauge.GetComponent<Image>().fillAmount == 0f)
        {
            if(this.stageLevel >= 1)
            {
                this.stageLevel++;
                this.Gauge.GetComponent<Image>().fillAmount = 1f;
                this.Stage.GetComponent<Text>().text = "Stage : " + stageLevel.ToString();
            }
            
            if (this.stageLevel == 4)
            {
                this.Stage.GetComponent<Text>().text = "Game Clear!";
                this.Stage.GetComponent<Text>().color = Color.green;
                Time.timeScale = 0f;
            }
        }
    }
}

stageLevel로 스테이지를 판단하고, 다음 단계로 넘어갈 때마다, 게이지를 가득 채워줌과 동시에 게이지가 줄어드는 양을 반으로 줄여 줍니다. 이렇게 총 3 스테이지를 구성하였습니다. 1스테이지는 10개 먹으면 넘어가고, 2스테이지는 20개, 3스테이지는 40개를 먹어야 합니다. 3개의 스테이지를 전부 통과하면, 4스테이지로 넘어가게 되는데, 저는 3스테이지 까지만 게임을 만들고 싶습니다. 그래서 4스테이지로 넘어가면 게임을 중단시키고 Game Clear! 문구가 뜨도록 하였습니다.

 

게임을 실행해서 한번 확인해 보겠습니다. 스테이지별 사진은 생략하고, 마지막 게임 클리어만 보여드리겠습니다.

게임-클리어
게임-클리어

저는 테스트하기 위해 수치를 조정하여 각 스테이지마다 10개만 먹어도 넘어가도록 만들어 주었습니다. 그렇게 총 30개를 먹어서 스테이지 1, 2, 3을 전부 클리어하고 4스테이지에 도달하여 Game Clear! 문구가 나옴과 동시에 게임이 중지되었습니다.

 

<NEXT>

이번에는 스테이지를 만들어 아이템과 게이지를 연동하여 스테이지가 넘어가는 것을 판단할 수 있도록 만들어 주었습니다. 다음에는 4스테이지에 도달하면 게임이 클리어되는데, 이전에 2D 플랫포머 게임 만들기에서 하지 못했던, 게임을 재시작 할 수 있는 버튼을 만들어 보겠습니다. 감사합니다.