게임 플레이 조율하기

언제 게임 플레이를 조율하는가?

요소 추가 -> 버그 발생 -> 게임 플레이 조율 <-이 사이 반복-> 플레이 테스트 -> 요소 추가

 

타임라인 조정하기

타임라인을 설정했을 때 회전이 돌아갈 때가 있는데 이 때는 키프레임을 수동으로 조정하여 바꿔줘야한다. 

타임라인 조절

Camera의 Field of View 값을 늘리면 카메라 시점이 멀어지지만 더 빨라보이는 효과가 있다.

Field of View

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

중첩 프리펩  (0) 2022.08.26
레이저 총알 파티클  (0) 2022.08.26
플레이어 회전  (0) 2022.08.26
플레이어 이동하기  (0) 2022.08.25
Input Manager와 Input System  (0) 2022.08.25

플레이어 회전

비행기의 회전 요소

Roll

씬 창의 Z축

Pitch

씬 창의 X축

Yaw

씬 창의 Y축

 

회전 영향

Pitch -> Yaw 순으로 조절하니까 모든 Yaw를 조정할 때 모든 축이 영향을 받는다.

Pitch -> Yaw

Yaw -> Pitch 순으로 조절하니까 다른 축에 영향 없이 깔끔하게 회전이 된다.

Yaw- > Pitch

Yaw - Pitch - Roll 순으로 조절하니까 다른 축에 영향 없이 잘 움직인다. (Y축 -> X축 -> Z축)

* Pitch - Roll만 따로 움직여도 영향 없이 잘 움직인다. => 순서가 중요하다.

Yaw -> Pitch -> Roll

 

회전 스크립트

월드에 대한 회전인 transform.rotation 대신 transform.localRotation을 사용하는 이유는
Player Rig(월드 기준 오브젝트)의 회전을 조절하면 카메라까지 회전되어 어지러워져서 그렇다. (의도에 따른 방법)

localRotation

왜 localPosition.y에 factor를 곱하느냐? => 현재 위치(높이)에 따른 각도를 조절해줘야 하기 때문에 위치에서 값을 불러온다.

그리고 pitch(x축) 회전이므로 factor 값을 음수로 넣어줘야 위치가 +가 될 때 x축으로 - 회전인 위로 향하게 된다.  

localPosition.y
pitch
x축 회전이 된 모습

x축 -> 화면 양옆 이동으로 Pitch Rotation이 연동, 컨트롤 할 때 함선 앞쪽의 기울기와 연동

y축 -> 화면 위아래 이동으로 Yaw Rotation과 연동

z축 -> 컨트롤 할 때 함선 양 옆의 기울기와 연동

C#과 Unity로 3D 게임 개발하기

회전 연동

 

나머지 회전들

YawDueToPosition도 위와 같은 이유인 position과 연동되기 때문에 localPosition.x을 사용하였고(양 옆 이동)

Yaw Factor 값을 양수로 설정해준 이유는 음수로 설정하면 바로 아래 사진처럼 가운데만 쏠 수 있게 되고

양수로 설정하면 정면을 쏠 수 있어서 그렇다.

YawFactor 음수
YawFactor 양수

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

레이저 총알 파티클  (0) 2022.08.26
게임 플레이 조율하기  (0) 2022.08.26
플레이어 이동하기  (0) 2022.08.25
Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25

플레이어 이동하기

 

애니메이션과 이동 오브젝트를 구분만 잘해주면 되는데 만약 부모와 자식 오브젝트의 피봇이 다를 때 동시에 회전하는 경우라면 애니메이션 이동을 자식에서, 트랜스폼 이동을 부모에서 처리하는 경우가 많이 생긴다.

로컬 포지션 이동

1. Time.deltaTime을 곱해줘서 프레임마다 이동하게 만들어줬고

2. controlSpeed라는 변수를 통해 속도 값을 조정해줬고

3. Mathf.Clamp를 사용하여 비행선이 움직일 수 있는 범위를 지정해줬다.

비행선 움직임

미리 비행선을 이동시켜놓더라도 Clamp가 상대적으로 더하는 게 아니라 Player Ship의 position 값에 제한을 둔 것이어서 대신 카메라를 이동시키는 방식을 선택했다.  

Clamp
카메라 조정

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

게임 플레이 조율하기  (0) 2022.08.26
플레이어 회전  (0) 2022.08.26
Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25

Input Manager

Input Manager는 입력에 관한 것들을 다루는 매니저이다.

이동에 GetAxis()를 사용할 건데 -1부터 1까지의 값을 반환하는 함수이다. -> Horizontal 수평 Vertical 수직

- Type에 따라 입력 받는 원천이 달라진다. (조이스틱, 데스크탑 등)

- Dead : 데드존 - 값이 올라가게 하려면 얼마나 밀어야 하는지를 뜻한다.

- Sensitivity : 끝 값(-1이나 1)까지 가는데의 속도 -> 높을수록 빠름

Input Manager

 

 

Input System

Window - Pakage Manager - Input System을 설치한다.

Input System

문제가있다면 Edit - Project Settings - Player - Configuration - Active Input Handling의 Input Manager(old)를 선택하면 된다.

- using UnityEngine.InputSystem;을 하고

- Input Action이라는 변수를 SerializedField로 선언한다.

- 이후에 + 버튼을 누르면 여러 Action 중에서 선택할 수 있다.

Input Action
Input Action Inspector

- 더블클릭하여 바인딩할 Path를 정해줄 수 있다.

Binding

Path에서 Listen을 클릭해서 키보드를 누르면 해당 키를 불러와준다.

Listen

이후에 서브 키도 설정이 가능하다.

Subkey

그냥 바인딩 1개를 추가하여 한 방향만 등록해놓으면 다른 방향도 알아서 적용해준다.

바인딩2

이후 코드에서 인스펙터에서 바인딩한 movement를 가져올 때 Vector2타입이니 축에따라 값을 넣어주면 된다.

Binding한 값 넣어주기

 

OnEnable()

Play버튼을 눌렀을 때 Awake() 콜백이 발생하는데 그 다음으로 호출되는 함수가 OnEnable()이다.

- 유니티가 플레이 버튼이 눌렸을 때 Awake에서 찾을 수 있는 모든 스크립트에 일어나라고 명령하고 그 다음에 OnEnable이 호출되어 안에 들어있는 것들을 활성화 시킨다. ** OnDisable도 써줘야함 (비활성화를 위해)

유니티 라이프사이클

유니티 라이프사이클 일부분
Onable(), Disable()

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

플레이어 회전  (0) 2022.08.26
플레이어 이동하기  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25
Terrain Tools  (0) 2022.08.25

Timeline

게임 안에서 무엇인가를 애니메이션으로 만들 수 있게 해주는 툴이다.

ex) 컷씬, 시네마틱 시퀀스 = 월드에서 적의 움직임을 애니메이션으로 만들거나 월드에서 무언가가 떨어지게 만들 수 있고 플레이어가 돌아다니다가 타임라인 이벤트를 발생시킬 수도 있다 ==> 애니메이션의 한 방법인데 특정 타이밍, 타임라인을 토대로 만들어진 애니메이션이라 언제 실행될 지 알 수 있다.

Window - Sequencing - Timeline으로 Timeline을 불러올 수 있다.

Timeline

Window - Animation - Animation의 Animation과 같이 이용했다.

Animation

 

타임라인 생성하고 적용하기

새 게임 오브젝트에 Create를 눌러 타임라인을 생성했다.

타임라인 생성

타임라인의 단위를 정할 수도 있다.

* 추가로 씬의 화면을 클릭했을 때 타임라인 창이 꺼져서 불편한 경우가 있는데 이 때는 잠금 버튼으로 고정하자

타임라인 단위

먼저 타임라인 이벤트 오브젝트의 위치를 정하고 좌측 상단의 +를 눌러 애니메이션 트랙을 생성해준다.

애니메이션 트랙

이후 애니메이터 부분에 타임라인 이벤트 오브젝트를 드래그앤 드롭하여 애니메이터를 생성한다.

드래그 앤 드롭

이후 해당 오브젝트에 애니메이터가 추가되고 녹화버튼을 눌러 애니메이션 녹화를 시작한다.

씬에서 화면 구도를 잡은 후 게임 오브젝트를 선택하고 GameObject - Align With View를 하면 이 특정 위치, 각도, 뷰로 스냅해준다.

* 팁으로 마우스 우클릭 + Q나 E를 누르면 씬 카메라를 위 아래로 움직일 수 있다

뷰 맞추기

얼마나 이동해야 하는지 감이 안잡힌다면 Edit - Preferences - Colors - Grid의 색을 조정하여 정하면 된다.

Grid Color

맘에 안 들면 우클릭 후 Edit In Animation Window에서 수정할 수 있다.

Edit Animation

키프레임 양 끝에 바 같은 걸 드래그해서 프레임을 늘리거나 줄일 수 있다.

프레임 늘리거나 줄이기

Curve를 선택해 애니메이션의 진행을 부드럽거나 극적으로 진행할 수도 있음

Timeline Curve

회전 같은 걸 조정한 후 물체가 부딪힐 것 같을 때 우클릭하여 Add Key를 한 뒤 위치 등을 조정하면 된다.

Curve Add Key

Curve의 Handle을 조정해 키프레임 앞 뒤의 기울기를 정할 수 있다.

Curve Hadle

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

플레이어 이동하기  (0) 2022.08.25
Input Manager와 Input System  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25
Terrain Tools  (0) 2022.08.25
Terrain  (0) 2022.08.25

Terrain Texture

Painit Texture라는 항목에서 아래쪽의 Layer 부분의 Add Layer를 통해 레이어가 있다면 레이어를 추가할 수 있다.

Create New Layer를 한다면 Texture를 통해 Layer를 생성할 수 있다.

Paint Texture
Terrain Layer

레이어를 생성하면 Duffuse Map, NormalMap, Height Map이 합쳐져서 레이어를 표현한다.

- Bump Map : 2D Map으로부터 얻은 3D 정보 혹은 3D 비주얼에 대한 레이어의 분류를 뜻하는 용어이다, Nomal Map과 Height Map은 Bump Map의 하위 용어이다. => 2D를 3D처럼 보이게 할 수 있도록 빛이 모양을 잡는 방식에 대한 정보를 가진 텍스처이다.

- Height Map : 흑백 스케일을 사용해서 높이를 보여준다. 터레인에도 높이 정보인 Height 맵이 포함되어있어 Export가 가능하다.

- Normal Map : 픽셀마다 다른 색은 빛이 어떻게 표현되어야 하는지 나타낸다 -> RGB 값을 사용, 각 픽셀의 (x,y,z) 값이 향하는 방향을 나타낸다.

 

Diffuse, Normal Map, Mask Map

여러 레이어를 추가한 모습

Terrain Layer

 

트리 추가하기

Paint Trees에서 Edit Trees - Add Tree로 트리 프리펩을 선택해 꾸밀 수 있다.

마우스 좌클릭을 통해 생성할 수 있고 Shift + 좌클릭으로 삭제할 수 있다.

Paint Trees

트리가 생성될 범위, 밀도, 높이 랜덤 등 여러가지를 정할 수 있다.

Tree Settings

나무를 심은 모습

나무 심기

** 이전에 Set Height로 설정하고 기준이되는 높이를 Ctrl + 좌클릭으로 한 번 지정해준뒤 (월드에 있는 타겟 지형) 다시 좌클릭만 눌러주면 그 높이로 맞춰진다.

Set Height

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Tools  (0) 2022.08.25
Terrain  (0) 2022.08.25
아르곤 침공 게임 디자인  (0) 2022.08.25

Terrain Tools

Pakage Manager - Unity Registry - Terrain Tools를 검색하면 다운로드 할 수 있다.

단축키

- A : 속도

- S : 사이즈

- D : 회전

Terrain Tools

Sculpt : Ctrl + 좌클릭으로 시작 지점 다른 편에 좌클릭으로 수행

- Bridge - 다리

Bridge
Bridge 2

- Colne - 지형 복사

Clone

- Noise : 울퉁불퉁하게 만듬

Erosion

- Wind : 바람이 쓸고 지나간듯이 지형을 깎음

아래의 Stroke에서 Jitter는 무작위성을 나타낸다.

Jitter

Smooth

- Height : 평평해짐

Smooth Height

Transform

- Pinch : 뽀족하게 만듬

Transform Pinch

- Smudge : 옆으로 밀어버림

Smudge

- Twist : 회오리바람 모양이 생김

Twist

Paint Holes : 구멍 생김 - 동굴, 터널 만들기

Paint Holes

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25
Terrain  (0) 2022.08.25
아르곤 침공 게임 디자인  (0) 2022.08.25

Terrain

Terrain으로 지형을 생성하고 꾸밀 수 있다.

Terrain

맨 우측 Terrain Settings에서 Terrain에 대한 설정을 할 수 있다.

- 너비, 길이, 높이 조절 가능하다.

Terrain Settings
Resolution

Paint Terrain에서 Terrain의 모양을 꾸밀 수 있다.

Paint 모드

- 좌클릭시 모양에 따라 Terrain이 그려지고

- Shift + 좌클릭시 지워진다.

- Brush Size : 붓 크기 (단축키 -> 키우기: ] / 줄이기: [ )

- Opacity : 그려지는 속도를 조절한다. (값이 작을 수록 조금씩 그려짐)

Paint Terrain

Terrain 작업을 할 땐 좌측 아래를 기준점으로 잡고 시작하는 게 좋다.

Terrain 위젯

Set Height 모드

- Height에서 값을 조정하여 최대 높이에 제한을 둘 수 있다.

- Flatten All을 통해 전체 Terrain의 높이를 설정할 수 있다. (평평해짐)

Set Height
Set Height 2

- Flatten All과 Terrain Settings의 최대 높이 설정을 통해 아래 깊이와 높이의 제한을 설정할 수 있다.

ex) 아래로 100 위로 600

깊이 설정

Terrain을 깊이만큼 내려서(-높이 y축 만큼) (0,0,0)에서 작업해주면 좋다.

기초 설정

추가로 마우스 우클릭 + W,A,S,D로 이동할 때 카메라 이동이 점점 빨라져서 불편하다면 씬의 카메라 아이콘을 클릭하여 Camera Acceleration을 끄면 된다.

카메라 가속 끄기

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25
Terrain Tools  (0) 2022.08.25
아르곤 침공 게임 디자인  (0) 2022.08.25

아르곤 침공

플레이어 경험

- 혼돈

핵심 메커니즘

- 피하고 쏘기

핵심 게임 루프

- 가능한 높은 점수를 얻기 위해서 최대한 멀리 가고 죽으면 처음부터 다시 시작하기

 

게임 테마

행성 Argon을 침공한 적들이 행성을 파괴하지 못하도록 지키는 것

 

요소들 - 우선순위

1. 카메라 레일 : 레벨에 경로가 있고 카메라가 따라가는 것 - 시네머신 사용

2. 플레이어 움직임 : 수평, 수직 움직임

3. 쏘기 : 플레이어가 상대편에 피해를 입히는 총알을 발사한다.

4. 체력 : 적들에게 체력 추가 - 총알을 맞았을 때 체력 줄어듬

5. 적 경로 : 적들은 정해진 경로를 따라서 이동 - 디자이너가 배치한 경로

6. 점수 : 적들을 죽여서 얻는 점수

7. 게임 루프 : 죽으면 레벨을 재시작한다.

 

고려 해볼만한 것들

- 다중 레벨

- 플레이어 쉴드

- 아이템

- 피격시 일시적 무적 기능

- 무기 업그레이드

 

 

'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 아르곤 침공' 카테고리의 다른 글

Input Manager와 Input System  (0) 2022.08.25
Timeline  (0) 2022.08.25
Terrain Texture, Tree  (0) 2022.08.25
Terrain Tools  (0) 2022.08.25
Terrain  (0) 2022.08.25

+ Recent posts