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

게임개발 중급(78) - Monster Killer(40)

by jyppro 2023. 8. 21.

Monster Killer

안녕하세요 오늘은 Killer Mode에서 바뀌어야 할 몇가지 변경점에 대해서 이야기를 해보겠습니다.

 

Killer Mode 필요 변경점

먼저, 모드를 디자인 할 때 Killer Mode의 역할은 게임 내 재화인 골드를 버는 용도로 만든 모드입니다. 따라서 해당 모드를 플레이할  때 골드가 벌려야 하고, 반복적으로 플레이가 가능해야 합니다. 그렇게 하기 위해서는 어떻게 바꿔야 할까 생각을 많이 했습니다. 결국 시간제한동안 몬스터를 잡아 골드를 벌게 하고, 골드를 사용해서 각종 능력치 뿐만 아니라 시간제한도 늘릴 수 있도록 설계하였습니다.

 

타이머

타이머
타이머

시간제한을 두려면 타이머가 필요합니다. 타이머 UI를 만들어 플레이어가 직접 얼마나 시간이 남았는지 확인할 수 있게끔 만들었고, 해당 기능도 만들어 줍니다.

 

TimerScript

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class TimerScript : MonoBehaviour
{
    public float maxTime = 60f; // 초기 제한시간
    private float currentTime;
    private bool isTimerRunning = false;
    [SerializeField] private TextMeshProUGUI TimeText;

    private void Start()
    {
        currentTime = maxTime;
        isTimerRunning = true;
        UpdateTimerText();
    }

    private void Update()
    {
        if (isTimerRunning)
        {
            currentTime -= Time.deltaTime;
            UpdateTimerText();

            if (currentTime <= 0)
            {
                // 타이머 종료 처리
                isTimerRunning = false;
            }
        }
    }

    public void StartTimer() { isTimerRunning = true; }
    public void StopTimer() { isTimerRunning = false; }

    public void IncreaseMaxTime(float amount)
    {
        maxTime += amount;
        UpdateTimerText();
    }

    public void UpdateTimerText()
    {
        int minutes = Mathf.FloorToInt(currentTime / 60);
        int seconds = Mathf.FloorToInt(currentTime % 60);
        TimeText.text = string.Format("{0:00}:{1:00}", minutes, seconds);
    }
}

타이머의 시간을 컨트롤하는 스크립트입니다. 최초 기준시간은 1분으로 설정하였고, 업그레이드 버튼을 통해 최대시간을 늘리도록 만들었습니다.

 

TimeIncreaseButton

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TimeIncreaseButton : MonoBehaviour
{
    [SerializeField] private int GoldNeeds = 10;
    public GameObject Timer;
    public GameObject Gold;

    void Start()
    {
        this.Timer = GameObject.Find("Timer");
        this.Gold = GameObject.Find("GoldText");
        GetComponent<UnityEngine.UI.Button>().onClick.AddListener(UpgradeTime);
    }

    void UpgradeTime()
    {
        if(this.Gold.GetComponent<GoldController>().currentGold >= this.GoldNeeds)
        {
            this.Gold.GetComponent<GoldController>().currentGold -= this.GoldNeeds;
            this.Timer.GetComponent<TimerScript>().IncreaseMaxTime(1f);
            this.Timer.GetComponent<TimerScript>().UpdateTimerText();
            this.Gold.GetComponent<GoldController>().UpdateGoldText();
        }
        else{
            return;
        }
    }
}

 다른 골드를 사용하는 버튼과 마찬가지로 최대시간을 1초 늘려주는 버튼을 만들어 줍니다.

 

게임 플레이

게임-플레이
게임플레이

Killer Mode를 실행시키게 되면, 최종적으로 해당 화면이 나타나게 됩니다. 타이머와 타임버튼이 추가되었습니다.

 

<NEXT>

오늘은 Killer Mode의 변경점에 대해서 일부 알아보았습니다. 앞으로는 해당 모드를 계속 변형시켜 더 좋은 게임이 되도록 노력할 것입니다. 다음에는 실제로 모바일 빌드를 하는 테스트를 진행해 보겠습니다. 감사합니다.