3. Project Boost 31~43
Udemy 강좌 'Complete C# Unity Game Developer 3D' 리뷰 및 기술 기록지입니다.
Project Boost : 31.Section Intro - Project Boost ~ 43.Play AudioSource SFX
[31.Section Intro - Project Boost ~ 33.Onion Design]
Project Boost 개요 및 기능 소개
[34.Unity Units]
본격적 프로젝트 시작, 기본 틀 제작(지형, 로켓)
[35.Introducing Classes]
C#의 class에 대한 기본 지식을 배운다.
- class는 코드를 정리하는 데 사용한다.
- class는 유사한 것들을 그룹화할 수 있게 해주는 변수와 방법에 대한 'Containers'이다.
- 새 스크랩트를 생성할 때마다 새로운 클래스를 생성하고, 해당 스크랩트가 한 가지를 담당하게 한다.
class를 사용함으로써 1. 코드 읽기가 편해짐 2. 문제 해결에 용이 3. 한 프로젝트에 다수가 작업 가능
Unity에는 이미 만들어진 class가 존재함으로 접근해 사용할 수 있다.
ex) Classname.MethodName()
[36.Basic Input Binding]
C#의 Input class에 대한 기본 지식을 배운다.
Input class : 사용자 입력을 감지하는 메서드를 모아둔 집합.
Input.GetKey(KeyCode key) : 키보드의 식별자의 Keycode 타입으로 입력 받는다.
[37.Using AddRelativeFroce()]
C#의 Rigidbody에 대한 기본 지식을 배운다.
Rigidbody : GameObject가 물리 제어로 동작하게 한다.
GetComponent<Type>() : 게임 오브젝트의 컴포넌트를 가져오는 함수이다. type은 가져올 컴포넌트의 타입이다.
AddRelativeForce() : Rigidbody에 힘을 전달하는 메서드
[38.Variable For Thrusting]
위로 가해지는 프레임 속도를 독립적으로 만든다.
mainThrust : 위로 향하는 추진력 변수
Time.deltaTime : 프레임률 영향을 받지 않도록 하는 변수
SerializeField : private 변수지만 inspector에 접근 가능하다.
Rigidbody의 특성 정리(Unity 출처)
Mass | 오브젝트의 질량입니다(디폴트값은 킬로그램). |
Drag | 오브젝트가 힘에 의해 움직일 때 공기 저항이 영향을 미치는 정도를 나타냅니다. 0이면 공기 저항이 없으며 무한대라면 오브젝트가 즉시 정지합니다. |
Angular Drag | 오브젝트가 토크로 회전할 때 공기 저항이 영향을 미치는 정도를 나타냅니다. 0이면 공기 저항이 없습니다. 앵글 드래그를 무한대로 설정한다고 해서 오브젝트의 회전이 멈추지는 않으니 주의해야 합니다. |
Use Gravity | 활성화되면 오브젝트는 중력의 영향을 받습니다. |
Is Kinematic | 활성화되면 오브젝트는 물리 엔진으로 제어되지 않고 오로지 Transform 으로만 조작됩니다. 플랫폼을 옮기는 경우나 HingeJoint 가 추가된 리지드바디를 애니메이션화하는 경우에 유용합니다. |
Interpolate | 리지드바디의 움직임이 어색해 보일 경우 다음 옵션 중에서 하나를 시도해보아야 합니다. |
- None | 보간이 적용되지 않습니다. |
- Interpolate | 이전 프레임의 트랜스폼에 맞게 움직임을 부드럽게 처리합니다. |
- Extrapolate | 다음 프레임의 트랜스폼을 추정해 움직임을 부드럽게 처리합니다. |
Collision Detection | 빠르게 움직이는 오브젝트가 충돌의 감지 없이 다른 오브젝트를 지나쳐가는 것을 방지합니다. |
- Discrete | 씬에서 다른 모든 콜라이더에 대해 불연속 충돌 검사를 사용합니다. 다른 콜라이더는 충돌 테스트에 불연속 충돌 검사를 사용합니다. 일반적인 충돌에 활용됩니다(기본값). |
- Continuous Speculative | 리지드바디와 콜라이더에 추측성 연속 충돌 검사를 사용합니다. 키네마틱 바디를 설정할 수 있는 유일한 CCD 모드입니다. 이 메서드는 스위핑 기반 연속 충돌 검사보다 리소스를 덜 소모합니다. |
Constraints | 리지드바디의 움직임에 대한 제약사항입니다.- |
- Freeze Position | 월드 좌표계의 X, Y, Z 축에서 이동하는 리지드바디를 선택적으로 중지시킵니다. |
- Freeze Rotation | 로컬 좌표계의 X, Y, Z 축에서 회전하는 리지드바디를 선택적으로 중지시킵니다. |
[39.Transform.Rotate() Our Rocket]
회전 변수 추가, 회전 속도를 독립적으로 설정한다.
함수를 작성하여 반복되는 코드를 대체한다.
[40.Rigidbody Constraints]
오브젝트 수정, 코드 정리
freezeRotation : 객체의 회전을 변경할지 여부를 제어한다. 활성화되면 물리 시뮬레이션에 의해 회전이 수정되지 않는다.
[41.Our Source Control Repo]
Source Control에 대한 기본 지식
Source Control : 코드 및 프로젝트 변경사항을 추적하고 관리하는 시스템
Git : 파일의 변경 사랑을 추적하는 버전 제어 시스템
Gitlab(Gitlab, Github) : 저장소 호스팅 서비스
Repository(Repo) : 프로젝트의 디렉터리
>> Reason Using Source Control : 이전 버전으로 돌아갈 수 있음을 알고, 프로젝트를 안전하게 변경할 수 있도록 허용.
[42.Unity Audio Introduction]
Unity Audio에 대한 기본 지식
Inspector에 Audio Source Section 추가.
[43.Play AudioSource SFX]
AudioSource에 대한 기본 지식
AudioSource : 오디오 소스를 3D로 표현한 것. AudioSource는 3D 환경에서 사운드를 재생하기 위해 GameObject에 연결된다. 3D 사운드를 재생하려면 AudioListener 도 있어야 한다.
audioSource.Play() : 오디오 재생.
!audioSource.isPlaying : 플레이하고 있지 않은 경우에만 플레이하도록 설정.
audioSource.Stop() : 오디오 중지.