[타워디펜스게임] #16. 게임 종료 조건

치치·2025년 2월 16일
0

타워디펜스게임

목록 보기
16/18
post-thumbnail

오늘의 목표

스테이지 클리어 조건은 모든 몬스터를 다 파괴시켰을때 or 캐릭터가 죽었을때

-> 현재 단계에서는 아직 패배 조건을 구현하지 못했다
-> 몬스터와 유닛의 상호작용은 구현했지만, 캐릭터와의 상호작용은 아직임 (수정예정)

<패배조건>

  1. 제한시간 내에 몬스터를 다 처리하지 못한 경우
  2. 메인 캐릭터가 사망했을 경우

<승리조건>

  1. 몬스터를 제한시간 내에 다 처리했을 경우


승리 조건


GameResult 스크립트

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

public class GameResult : MonoBehaviour
{
    [SerializeField] GameObject ClearPanel;

    [SerializeField] GameObject LosePanel;

    // 첫 셋팅 비활성화
    private void Awake()
    {
        ClearPanel.SetActive(false);
        LosePanel.SetActive(false);
    }

    public void Victory()
    {
        ClearPanel.SetActive(true);
    }
    
    public void Lose()
    {
        LosePanel.SetActive(true);
    }
}

victory UI창

-> UI창의 버튼은 ButtonManager에서 정의해둔 로직에 따라 로비로 이동하거나 다시 재시작된다



패배 조건

  1. 제한시간 내에 몬스터를 다 처리하지 못한 경우
    -> TimeController 스크립트에 함수를 만들고 호출한다

  2. 메인 캐릭터가 사망했을 경우
    -> 캐릭터와 몬스터의 상호작용으로 처리한다

  • 게임 결과 스크립트의 Lose 함수를 필요한 곳에 호출하여 사용한다
  • 승리 조건과 다르게, 패배조건은 메인 유닛이 죽으면 패배이다
    -> 기존 승리 조건은 몬스터를 다 죽이는 것.

메인 캐릭터 스탯 스크립트

  • 재정의 해둔 Die()함수
  • EndGame() 코루틴 함수 안에 게임 결과창 Lost()함수를 호출한다
    -> 코루틴을 사용하여 메인 유닛이 죽고난 후 2초 뒤에 스테이지 실패 팝업창이 뜬다


Lose UI창

profile
뉴비 개발자

0개의 댓글