본문 바로가기
게임 제작/뉴진스 파워퍼프걸 팬게임

뉴진스 파워퍼프걸 팬게임 제작 (12)_ Stage1_레벨 디자인 (New jeans Powerpuff girls fangame)

by 나는반딧불 2023. 8. 27.
반응형

뉴진스 파워퍼프걸 팬게임 제작 (12)_ Stage1_레벨 디자인

그동안 한 작업들이 기초공사였다면 이제 부턴

기초 공사 위로 쌓아 올리기만 하면 된다.

그동안 만든 프리팹들을 배치하여 스테이지를 레벨디자인할 계획이다.

 

 

이번글의 목표

wave0 레벨디자인

wave1 레벨디자인

wave2 레벨디자인

waveCtrl 구현

 

 

 

 

1. 빈 오브젝트 만들고 이동 스크립트 추가하기

Create Empty로 빈 오브젝트를 하나 만들고 Wave0이라고 이름을 바꿔준다.

그리고 이동스크립트를 추가하고 스피드를 음수로 설정해 왼쪽으로 움직이게 만든다.

 

 

 

 

2. 해당 오브젝트 하위에 프리팹 배치하기

이제 그동안 고생하며 만든 프리팹들을 원하는 위치에 배치하면 된다.

그냥 배치만 하면 되기 때문에 레벨디자인 자체는 굉장히 쉽다.

단지, 재밌고 알차게 구성하기가 어려울 뿐이다.

 

wave0은 튜토리얼이라

조작법을 하나하나 알려주는 식으로 설계했다.

 

 

모두 배치하여 위와 같은 모습이 되었다.

 

 

3. WaveFinalCheck 오브젝트 생성

모든 Wave를 쭉 나열해서 만들면 당장에 만들기는 편하지만

각 구간을 테스트 해보기도 힘들고 아무리 가벼운 게임이라 하더라도 과부하가 올 수있다.

그래서 컨셉별로 Wave0, Wave1, Wave2 등으로 나눠서 제작할 계획이다.

 

현재 Wave가 끝나면 다음 Wave가 활성화되게 만들어주기 위해

Wave0 하위에 빈오브젝트를 만들고WaveFinalCheck라고 이름을 설정해주었다.

 

4. WaveCtrl 오브젝트 생성

그리고 똑같이 빈오브젝트를 하나 더 생성하고 WaveCtrl이라고 이름을 설정한다.

 

5. WaveFinalCheckCtrl 스크립트 작성

public class WaveFinalCheckCtrl : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "LEFTWALL")   //화면 왼쪽 벽에 닿으면
        {
            GameObject.Find("WaveCtrl").GetComponent<WaveCtrl>().NextWave();  
            //WaveCtrl오브젝트를 찾고 그 오브젝트에 있는 WaveCtrl 스크립트의 NextWave함수를 호출한다.
        }
    }
}

구성은 간단하다.

해당 오브젝트가 화면 왼쪽 벽에 닿으면 WaveCtrl의 Next Wave함수를 호출한다.

아직 WaveCtrl 스크립트를 만든적 없으니 이제 이 스크립트를 작성할 차례이다.

 

6.WaveCtrl 스크립트 작성

public class WaveCtrl : MonoBehaviour
{
    public GameObject[] wave =new GameObject[5]; //wave는 총 5개
    private int waveNum = 0;
 
    public void NextWave()  //다음 웨이브 소환
    {
        wave[waveNum].SetActive(false);  //현재 wave 비활성화
        waveNum++;
        wave[waveNum].SetActive(true);  //다음 wave 활성화
    }
}

현재의 wave오브젝트를 비활성화하고

waveNum번호를 올려서

다음 wave 오브젝트를 활성화 한다.

 

 

7. WaveFinalCheck에 스크립트 추가 및 물리 충돌 컴포넌트 추가

LEFTWALL과 충돌을 감지하기 위해 물리 충돌 컴포넌트를 추가해주고

아까 만든 WaveFinalCheckCtrl 스크립트를 추가해준다.

 

 

8. 프리팹화 하기

이제 해당 오브젝트를 프리팹화 해서 Wave가 끝날때마다 해당 프리팹을 끌어다 배치한다.

 

9. WaveCtrl에 스크립트 추가

WaveCtrl 오브젝트에 아까 만든 WaveCtrl 스크립트를 추가해 준다.

Wave 칸들이 비어있는 상태이다.

이제 나머지 Wave도 만들어서 해당 빈칸에 채워 넣어줘야 한다.

 

10. Wave1 레벨디자인

wave0을 만들었을 때랑 같은 방식으로

프리팹들을 wave1 오브젝트 하위에 배치해 레벨디자인했다.

 

wave1은 본격적으로 아이템과 일반 토끼들을 적절히 배치해서

박진감있는(?) 전투를 체험할 수 있게 설계했다.

그리고 Waved의 마지막에는 이전에 만들었던 

WaveFinalCheck 프리팹을 배치했다.

 

 

11. Wave2 레벨 디자인

Wave2는 Wave1보다 조금 더 어렵게 설계했다.

 

날개 토끼와 일반토끼, 당근 가시들을 상당수 배치해서

자칫하면 게임오버 될 정도로 어렵게 디자인했다.

 

 

12. WaveCtrl 설정

 

Wave0을 제외한 나머지 Wave는 비활성화 해주고

 WaveCtrl에 방금 만든 Wave들을 집어 넣는다.

이제 Wave0이 끝나면 Wave1이 시작되고

Wave1이 끝나면 Wave2가 시작되도록 만들어졌다.

 

13. 결과물

Wave0
Wave1
wave2

원래는 뉴진스 음악이 배경음악으로 나오게 만들었는데

그렇게 올렸다간 저작권 위반으로 정지당할 것 같아서 배경음악은 뺐다.

 

내가 설계한 스테이지인데도 생각보다 어려워서

결국 Wave가 다 끝나기 전에 체력과 목숨이 0이 되어 버렸다.

차후에 조금씩 수정하면서 난이도를 낮출 생각이다.

 

 

 

이번 글에서는 비로소 진짜 플레이할 수 있는 게임을 만들어 보았다.

다음 글에서는 wave3과 wave4를 만들기 앞서

예전에 기획했던 파이프와 화면 끝 사이에 끼면

목숨이 깎이는 시스템을 구현할 계획이다.

반응형