[Unity][3D-Game] Tower Defense Game (20)

suhan0304·2023년 12월 24일
0
post-thumbnail

강의영상 (20)


개발

메인 메뉴 Scene

메인 메뉴 씬을 새로 만들어주기 위해 MainScene을 Ctrl+D 해준 후에 MainMenu로 이름을 바꾼 후에 사용한다. 이후에 MainScene은 MainLevel로 이름을 변경해준다. MainMenu를 열어준 후에 메인 메뉴를 제작한다.

이후에 Main Camera, Directional Light, Environment 빼고 모두 제거해준다.

Environment에서도 GroundPlane 빼고 모두 제거해준다.

StandardTurret을 추가해준 후에 Transform을 리셋해주고 y를 -0.5로 설정해서 바닥에 붙여준다.

원하는 구도를 Scene창에서 잡은 다음에 카메라를 누르고 Ctrl + Shift + F를 누르면 카메라가 해당 위치로 설정된다.

MainCamera에서 Clear Flags를 Solid Color로 바꾼 후에 적절한 색으로 수정해서 배경(하늘)의 색을 바꿔준다.

마지막으로 StandardTurret의 Prefab 연결을 Unpack 해준다.

PLAY 버튼

이제 버튼을 두기 위한 UI를 새로 Canvas를 만들어주고 Text를 추가해준다.

  • 앵커를 전체 꽉 차게 설정
  • 글자 사이즈를 100으로 설정
  • 글꼴을 Roboto-Medium으로 설정
  • 글자 색을 흰색으로 설정
  • Shadow 컴포넌트 추가

캔버스의 Renderer Mode를 World Space로 설정해주고 스케일을 0.004, 0.004, 0.004로 설정하고 위치를 0, 0, 0으로 수정한 다음에 포탑의 위로 끌어올려준 다음에
lotation y를 90으로 설정해준다.

이제 Canvas와 Text 이름을 각각 수정해주고, Text에 버튼 컴포넌트를 추가해준다.

이제 저번에 했던 방식과 동일하게 버튼의 Transition을 Animation으로 바꾼 후에 Animator를 추가하고 기존에 만들어놨던 button 컨트롤러를 연결시켜준다.

QUIT 버튼

기존의 TopTurretCanvas를 복사해서 BarrelCanvas라는 이름으로 붙어넣은 후에 위치와 회전, 글꼴을 적절히 설정해서 아래와 같이 버튼을 만들어준다.

MainMenu라는 빈 오브젝트를 만들어서 MainMenu 스크립트를 추가해서 로직을 구현한다.

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

public class MainMenu : MonoBehaviour
{
    public static string MenuToLoad = "MainMenu";
    public static string levelToLoad = "MainLevel";

    public void Play()
    {
        SceneManager.LoadScene(levelToLoad); //MainLevel 이름의 씬을 로드
    }

    public void Quit()
    {
        Debug.Log("Exiting..."); //유니티 에디터에선 실제로 종료 확인이 안 됨 : 출력으로 확인
        Application.Quit(); 
    }
}

이제 버튼에 각 Play, Quit 함수를 연결시켜준다.

Build Settings에서 MainMenu Scene을 추가해주어야한다. 이 때 MainMenu를 0으로 끌어올려야 기본 씬으로 실행된다.

Scene 로드 후에 조명이 이상해지는 오류는 Window > Lighting > Settings에서 Auto Generate를 끄고 Generate Lighting을 눌러주면 조명이 이상 없이 나온다.

일시정지 메뉴에도 메인 메뉴 버튼을 연결

PauseMenu.cs

public void Menu()
{
    Toggle();
    Debug.Log("Go to Menu"); //메뉴로 돌아가기
    SceneManager.LoadScene(MainMenu.MenuToLoad); //MainMenu 이름의 씬을 로드
}

터렛 회전 애니메이션

두 Canvas를 Turret 내부의 PartToRotate에 넣어준 후에 애니메이션을 추가해준다.

  • 0, 4, 8초에 각각 lotation Y를 -60, -105, -60으로 설정

이제 모든 키 프레임을 드래그 해주고 우클릭 Flat 해준다.


결과물

profile
Be Honest, Be Harder, Be Stronger

0개의 댓글