1인 개발/PushAndSlash

푸쉬앤슬래시 개인 프로젝트 7일차

잼잼재미 2024. 5. 11. 03:36

구현 내용


1. StageController 구현


 

private void StageSetting()
{
    transform.GetChild(_gameData.Stage - 1).gameObject.SetActive(true);
}

 

DataManager에 저장된 Stage의 값을 받아와서 각각 Stage를 활성화

 

 

2. GameClear 구현


 

if (transform.position.y <= -10f)
{
    transform.gameObject.SetActive(false);
    break;
}

 

적의 현재 Position의 y 값이 -10보다 작으면 처치 완료로 SetActive(false) 해줌

 

 

private bool IsEnemy()
{
    int enemyCount = transform.GetChild(_gameData.Stage - 1).childCount;

    for (int i = 0; i < enemyCount; i++)
    {
        if (transform.GetChild(_gameData.Stage - 1).GetChild(i).gameObject.activeSelf) return true;
    }

    return false;
}

 

각각 Stage 자식오브젝트로 있는 적 프리팹이 모두 비활성화 될 때, GameClear 실행

 

 

3. GameOver 구현


 

if ((_time <= 0 || !IsPlayer()) && !_isGameOver)
{
    _isGameOver = true;
    GameOver();
}

 

마찬가지로 Player의 현재 Position의 y 값이 -10보다 작을 때와 남은 현재 시간이 0초 이하 일 때, GameOver 실행

 

 

4. 일시정지 구현


 

버튼 클릭 시, 게임 일시정지 실행

 

 

회고


오늘은 게임의 Stage를 디자인하기 위한 StageController를 구현했다. 처음에는 ObjectPool을 사용해서 각각 적 프리팹을 스폰하는 형식으로 구현하려고 했지만, 적이 반복적으로 스폰되는 것이 아니라 배틀 시작 시, 한번에 모든 적이 생성되는 것이기 때문에 각각 Stage에서 직접 적 프리팹으로 위치를 설정하고 Stage를 활성화하는 식으로 구현했다. 그리고 게임 클리어, 게임 오버, 일시 정지 기능을 구현했다. 이제 정말 많이 게임다워졌다고 생각이 들었다. 이제 전반적으로 나머지 UI를 정보에 맞게 적용되도록 설정하고 LobbyScene을 구현하도록 하겠다!