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

뉴진스 파워퍼프걸 팬게임 제작 (18)_ Title Scene 구현 (New jeans Powerpuff girls fangame)

by 나는반딧불 2023. 9. 21.
반응형

뉴진스 파워퍼프걸 팬게임 제작 (18)_ Title Scene 구현

이번 글에서는 게임 실행시 처음 보게 되는 Title Scene을 구현해볼 예정이다.

Game Start를 눌렀을때 캐릭터 선택 화면으로 바뀌는 건 추후에 구현하고

랭킹, 정보, 나가기에 대해 구현할 예정이다.

 

 

 

이번 글의 목표

Title Scene 제작

 

 

Title Scene은 뉴진스 앨범 티저 영상과 비슷하게 만들어볼 예정이다.

 

 

 

1. 배경 구현

Title Scene을 새로 만들고 아무것도 없는 Scenedp

하늘 배경에 건물들을 티저영상과 비슷하게 배치하여 꾸며주었다.

 

 

2. 배경음 설정

배경음은 티저 영상 배경음인 ASAP의 특정 부분을 구간반복한 소리파일을 사용하였다.

처음부터 재생되어야하고 반복되어야하므로

Play on Awake와 Loop의 체크박스에 모두 체크해 주었다.

 

 

3. 캐릭터 배치

티저의 위치와 같이 캐릭터들을 배치해주고

 

각 캐릭터가 날아다니는 효과를 주기 위해 위아래 이동 루틴 스크립트를 추가해주었다.

 

 

 

4. 글자 배치

타이틀 글자 이미자와 메뉴 이미지를 우측에 배치해 주었다.

 

5. 화살표 선행 처리

현재 메뉴를 가르킬 화살표의 위치 설정을 위해

빈 오브젝트들을 생성해서 각 메뉴 옆에 배치해주었다.

 

그리고 GAME START메뉴 옆에 화살표 이미지를 배치해주었다.

 

 

6. 정보창 배치

정보창 이미지를 화면 중앙에 배치해주고 비활성화 해주었다.

해당 이미지는 information을 가르키는 상태에서 Space를 누르면

다시 활성화되게 만들 예정이다.

 

 

7. Build Settings

Build Setting 창에 Title Scene을 끌어다 가장 상단에 배치해준다.

 

 

8. Title Ctrl 스크립트 작성

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

먼저 코드 상단에 using UnityEngine.SceneManagement;를 추가해준다.

 

    public GameObject arrow;  //화살표
    private Transform tr;

    public GameObject information;

    public Transform[] arrowpos = new Transform[4];

    private int state = 0; //0 : 게임시작 , 1 : 랭크 리셋 , 2 : 정보 , 3 : 나가기 

    bool canmove = true;  //정보창이 떴을때 화살표 못움직이게 만들기 위한 변수

화살표 오브젝트와 정보창 오브젝트를 선언해주고

각 메뉴의 상태를 저장할 정수 변수를 선언해준다.

또한 화살표의 각 위치를 저장해줄 Transform 변수도 배열로 선언해준다.

마지막으로 정보창이 떴을때 화살표를 움직이지 못하게 해줄 bool 변수를 하나 선언해준다.

 

 void Start()
    {
        tr = arrow.GetComponent<Transform>();
    }

Strat함수에서는 화살표 오브젝트의 Transform값을 tr에 대입한다.

 

 

 void Update()
    {
        if(Input.GetKeyDown(KeyCode.DownArrow))
        {
            if (state < 3&&canmove)
            {
                state++;
            }
        }

        else if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            if (state >0&&canmove)
            {
                state--;
            }
        }

        tr.position = arrowpos[state].position;
     }

 위 화살표를 누르면 화살표가 위로이동

아래 화살표를 누르면 아래로 이동하게 작성해주었다.

또한 화살표가 상하 끝에 있을때는 더이상 움직이 못하도록 작성했다.

 

 if (Input.GetKeyDown(KeyCode.Space))
        {
            if (state==0)
            {
              //나중에 게임시작
            }
            else if (state==1)
            {
                SceneManager.LoadScene("RANKING");
            }
            else if (state==2)//정보창
            {
                if(canmove)
                {
                    canmove = false;
                    information.SetActive(true);
                }
                else if(!canmove)
                {
                    information.SetActive(false);
                    canmove = true;
                }

            }
            else if (state==3) //종료
            {
                UnityEditor.EditorApplication.isPlaying = false;
            }
        }

추가로 Update문에 Space버튼을 눌렀을때 현재 화살표 위치에 따른 이벤트를 발생하도록

스크립트를 작성해주었다.

 

 

9. 스크립트 추가후 오브젝트 배치

빈오브젝트를 생성해서 GameCtrl이라고 이름을 바꿔준후

방금 작성한 스크립트를 추가해주었다.

각 오브젝트 빈칸에 화살표와 정보창, 위치값 오브젝트들을 배치해주었다.

 

 

10. RANKING Scene 수정

예전에 만들어 두었던 RANKING Scene의 글자를 수정하고 추가해주었다.

 

 void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            GoTitle();
        }
    }
     void GoTitle()
    {
        SceneManager.LoadScene("TITLE");
    }

RankingCtrl 스크립트에도 해당 코드를 추가하여

Space버튼을 누르면 Title Scene으로 이동할 수 있게 만들었다.

 

 

 

 

11. 결과물

화살표가 가르키는 메뉴에 따라 각각의 이벤트가 활성화 되는 것을 확인할 수 있다.

 

다음글에서는 GAME START를 눌렀을 때 넘어가는

캐릭터 선택 이벤트를 구현을 할 계획이다.

반응형