10. 화면 전환, 11. Mirror를 활용한 네트워크 게임

MOON·2022년 7월 14일
0
post-thumbnail

화면 전환

전환할 다른 Scene가 필요하다.
기존 Game Scene과 함께 Intro, Win, Lose를 추가로 만든다.

생성방법 - File - New Scene 저장

이제 Scene을 실제 게임에 적용 가능하게 저장하기
사용할 Scene을 Build Settings에 삽입


순서는 Intro - Game - Win/Lose 형식으로 맞춘다.

Intro Scene를 화면에 나오기 위해 Intro.cs 스크립트를 생성한다.

게임 씬을 로드하기 위해서는 using UnityEngine.SceneManagement를 적어주어야 한다.

if문을 사용해 만약 아무키나 누를시 Game씬을 로드한다는 내용이다.

Intro Scene 구성
빈 오브젝트(Intro)를 만들고 Intro 스크립트를 적용
Plane을 만든다음 배경으로 적용
Scale(20, 0, 20), Rotate(90, 0, 0)

이제 승리 & 패배 Scene 로 넘어갑니다.
포탄을 맞추면 승리하고, 맞으면 패배를 한다.
포탄을 통해 승패가 결정되니 bullet.cs를 수정하자.

여기서도 마찬가지로 using문에 SceneManagement를 적어준다.

SceneManager.LoadScene("로드할 씬 이름") 형식으로 불러온다.
이기면 Win, 지면 Lose를 불러온다. if 문에 맞게 적어두자.



Mirror 애셋을 활용한 탱크 네트워크 게임

Mirror 애셋 세팅

Asset Store에서 “Mirror” 검색
다운로드 및 Import

빈 게임오브젝트 생성 : NetworkManger
NetworkManager 오브젝트를 선택 한 후 NetworkMnager, NetworkMangerHUD 두 개의 콤포넌트를 추가
NetworkManger 콤포넌트를 추가하면 자동으로 KcpTransport 콤포넌트도 추가됨

NetworkManager :
서버와 클라이언트 사이에 기본적인 연결을 구현해 주는 컴포넌트
네트워크 주소, 플레이어 생성 등 기본적인 중요한 기능을 담당

NetworkMangerHUD :
사용자가 서버와 클라이언트에 접속하기 쉽도록 UI를 생성해 주는 역활을 담당
추후, 네트워크 테스트를 할 때 화면 좌측 상단에 생기는 UI를 생성


클라이언트 플레이어는 Tank 오브젝트를 선택하고 인스펙터 창에서 NetworkIdentity, NetoworkTransform 콤포넌트를 추가

NetworkTransform 컴포넌트에서 Client Authority 항목을 찾아 체크
Client Authority는 서버와 클라이언트 모두에서 오브젝트의 움직임을 연동 할 수 있음

프로젝트 세팅
Edit - Project Settings - Player 에서
Fullscreen Mode : Windowed
Default Screen Width : 1024
Default Screen Height : 768
Resizable Window : check

File - Buildsettings
Build 버튼 클릭
실행파일을 저장할 디렉토리를 하나 만든다 : Exe
새로 만든 폴더를 선택한다

좀 전에 만든 디렉토리에서 실행 파일을 실행 시킨다
UI 버튼에서 서버를 클릭한다 그러면 탱크가 한대 나타난다.

실행 버튼을 클릭후 클라이언트 버튼까지 클릭하면 탱크가 움직인다.

이것으로 탱크 게임을 끝냈다. 수업시간에 배운내용이라 배울때는 힘들었지만 복습할때는 어렵지 않게 했다.


간단한 게임영상은 아래 링크에 있다.

3D 탱크게임

profile
나만의 공간

0개의 댓글