Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이것저것

[2023 모각코] 6회차 (2024.01.27.) 본문

2023 동계 모각코

[2023 모각코] 6회차 (2024.01.27.)

수빈최 2024. 1. 27. 22:15

학습 목표
<레트로의 유니티 게임프로그래밍 에센스> 8장을 통한 유니티 학습
 

 

학습 내용
: 사방에서 날아오는 탄알을 피하는 탄막 슈팅게임 만들기 3 (게임매니저, UI, 최종완성)

 

 

 

스테이지가 y축을 기준으로 빙글빙글 회전하기 위해 Rotator C# 스크립트를 작성함

이때, 컴퓨터의 성능에 관계없이 동일하게 회전하기 위해 초당 프레임에 역수를 취한 값(Time.deltaTime)을 곱해줌

 

Update()가 1초에 60번 실행되는 환경을 기준으로 설명하면

 

1. 60도를 실행횟수인 60조각으로 나누기 (1/60 곱하기) > 1조각은 1도가 됨

2. Update()가 1초동안 60번 실행됨 > 한번에 1조각(1도)씩 60번 누적됨

3. 1초동안 누적된 회전은 60도

 

 

 

 

 

 

UI를 만들기 위해 하이어라키 창에서 TimeText라는 이름의 Text를 만들어줌

처음에는 왼쪽 아래에 위치해 있는 것을 인스펙터 창에서

alt 키를 누른 상태로 앵커 프리셋을 top-center로 설정함

 

 

 

TimeText의 텍스트 필드 내용, 정렬, 폰트 컬러를 각각 설정

 

 

 

위에서 만들어 둔 TimeText를 Ctrl+D로 복제하여 게임오버 되었을 때 활성화할 텍스트를 생성

이번에는 앵커 프리셋에서 middle-center을 선택하여 화면의 중앙에 배치

 

 

 

위에서 Gameover Text를 만들었던 것처럼 Record Text도 똑같이 복제함

하지만 Gameover Text와 Record Text는 게임오버시 함께 활성화되어야하기 때문에

Record Text를 Gameover Text의 자식으로 만들어 평상시에는 비활성화 해둬야함

 

 

 

UI 관련 라이브러리와 씬 관리 관련 라이브러리를 using을 통해 선언

Start() 메서드에서 생존 시간, 게임오버 상태를 초기화

 

Update() 메서드에서 게임 오버가 아닌 동안 생존 시간을 갱신하여 timeText 컴포넌트에 표시하고

게임오버 상태에서 R키를 입력받았을 경우 게임을 재시작 할 수 있도록 SampleScene 로드

 

EndGame() 메서드에서 현재 상태를 게임오버 상태로 전환하고

앞서 비활성화 해두었던 게임오버 텍스트 게임 오브젝트를 활성화

이전까지의 최고 기록을 가져와 현재 생존 시간과 비교 후 최고기록 갱신 및 표시

 

 

PlayerController.cs

 

GameManager의 EndGame()을 실행하기 위해 PlayerController 스크립트를 수정함

현재 씬에서 GameManager 오브젝트를 가져와 EndGame()을 실행

 

 

 

스크립트를 적용하기 위해 하이어라키 창에서 GameManager 오브젝트를 생성하고

Gameover Text, Time Text, Record Text에 각각 오브젝트를 드래그&드롭하여 적용