Unity 입문 강의 1일차
팀원들이 알려주는 TIL
모르는 단어 정리
Chapter .1 Unity 소개
Content .1 게임 엔진이란?
- 게임을 개발할 수 있도록 다양한 기능을 제공하는 프로그램
- 그래픽, 물리, 사운드, 애니메이션, 인공지능 등 다양한 요소 관리 및 통합
Content .2 Unity의 특징
- 다양한 플랫폼에서 실행 가능
- 사용자 친화적인 인터페이스와 강력한 기능 제공
Content .3 Unity의 구조
- C++로 구성된 코어 엔진을 연결해주는 C# 구현부가 있고, 여기에 C# 언어를 통해 스크립트를 작성하는 방식
Content .4 최신버전의 Unity로 무조건 업데이트를 하지 않는 이유
- meta 파일이 뒤섞이며 문제가 발생할 수 있음
- Package나 Asset이 적용되지 않을 수 있음
Content .5 Unity의 주요 기능
- 프로젝트 관리 : 프로젝트 생성
- 씬(Scene) : 장면과 화면 구성
- 에셋 (Asset) : 리소스 관리
- 컴파일 및 빌드 : 코드를 컴파일 & 실행 가능한 게임으로 빌드
- 디버깅 : 오류를 찾고 수정
- 에디터 확장 기능 : 유니티 에디터를 사용자 요구에 맞게 확장
Content .6 씬(Scene)
- 연극에서 하나의 막과 유사
- 씬 단위로 오브젝트들을 로드하고 업로드
- 게임은 하나 이상의 씬으로 구성
- 메인 씬, 게임 플레이 씬, 엔딩 씬 등
Content .7 게임 오브젝트(GameObject)
- Transform : 위치, 크기, 회전 (부모-자식 관계를 가짐)
- 씬에 배치되는 모든 요소
- 보이지 않고 기능한 수행하는 게임오브젝트도 있음
Content .8 컴포넌트(Component)
- 게임오브젝트를 구성하는 부품 (Transform, SpriteRenderer 등)
- SpriteRenderer : 2D 이미지
- Rigidbody : 중력, 강체물리
- Custom Script : 애니메이션, 충돌체 등등
Content .9 에셋(Asset)
- 이미지, 사운드, 모델 등
- 코드를 포함하여 게임에 필요한 모든 리소스
- 에셋 폴더에 저장됨
Content .10 QWERTY로 배우는 오브젝트 조작
- Q (Hand Tool) : 씬 뷰를 이동시킴
- W (Move Tool) : 게임오브젝트를 이동시킴
- E (Rotate Tool) : 게임오브젝트를 회전시킴
- R (Scale Tool) : 게임오브젝트의 스케일을 조절함
- T (Rect Tool) : 게임오브젝트의 스케일을 사각형 방향으로 조절함
- Y (Transform Tool) : W,E,R 을 동시에 사용함
Content .1 New Input System
- Input Action
- 입력 행동을 정의
- ex> "점프"라는 행동의 정의 후 트리거하는 키 or 버튼을 지정
- Input Action Asset
- Player Input Component
- 자동으로 입력 행동을 처리 후 해당 게임 오브젝트에 메세지 전송
Content .2 New Input System의 장점
- Cross-Platform Compatibility
- Rebinding
- Multiplayer Support
Chapter .3 충돌과 컴포넌트의 이해
Content .1 Collider
- 게임 오브젝트에 물리적 형태 부여
- 충돌 감지를 가능하게 함
- BoxCollider 사각형, SphereCollider 구형, MeshCollider 복잡한 메시 형태 제공
Content .2 Rigidbody
- 게임 오브젝트에 물리 법칙을 적용
- 중력에 영향을 받거나 힘과 토크를 통해 움직일 수 있음
- 충돌이 되는 대상 중 "한 쪽"에는 Rigidbody가 붙어있어야 Collider와 충돌할 수 있음
- Trigger 충돌도 Rigidbody 필요
Content .3 충돌 발생 시
- Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트 발생
- 2D는 각각 뒤에 2D를 붙임
Content .4 타일맵
- Tilemap Renderer : Tilemap의 모양을 실제로 그리는 역할
- Tilemap Collider 2D : Tilemap에 물리적인 경계를 추가하는 데 사용
- Tile Assets : 개별 타일의 모양과 동작을 정의
Chapter .4 조준 시스템 구성
Content .1 쿼터니언(Quaternion)
- Unity 인스펙터 창에서 나오는 회전은 Vector3으로 표현 (오일러각 (Euler Angle))
- 시중의 많은 3D 소프트웨어는 내부적으로 쿼터니언을 사용
- 짐벌 락(Gimbal Lock) 문제를 피할 수 있음
- 수하적으로는 4차원 복소수를이용한 회전 표현 방법 (x,y,z,w 형태로 표현)
- 직접 x,y,z,w 값을 조정하진 않아도 됨
- Unity의 내장 함수를 사용하는 것이 좋음 (Quaternion.Euler, Quaternion.LookRotation, Quaternion.Slerp 등)
- 쿼터니언은 직관적인 수체계를 사용하지 않음
Content .2 쿼터니언 심화
- Quaternion.Euler : 오일러각을 쿼터니언으로 변경 (ex> Quaternion.Euler(0f,0f,90f))
- Quaternion.LookRotation : 앞과 위를 특정한 방향으로 하는 회전 쿼터니언 생성
- Quaternion.Slerp : 쿼터니언과 다른 쿼터니언 사이의 내분점을 알 수 있음
Content .3 삼각함수 기초와 아크탄젠트
- 삼각함수
- 각도를 통해 삼각형들의 각 변의 비율을 알아낼 수 있는 함수
- Sin : 높이 / 빗변
- Cos : 밑변 / 빗변
- Tan : 높이 / 밑변
- 아크탄젠트(ArcTangent)
- 비율을 통해 각도를 알아낼 수 있는 함수
- 역삼각함수
- x,y 자체가 양수인지 음수인지를 통해 360도를 다 구분해낼 수 있게 함
- "Atan2" 라고 이름 붙이고, y, x 순으로 인수를 삽입
- π로 표현된 각도를 180도가 되도록 표현하는 방법을 "호도법"
- 호도법의 단위를 "라디안" 이라고 함
- Mathf.Rad2Deg 로 계산할 수 있음
Chapter .5 팀원들이 알려주는 TIL
- 팀원 홍성우
추상클래스와 상속
가이드 라인이 주어져있을 때 추상클래스를 사용해서 강제적으로 구현
라이브로 게임 운영 중에 리메이크, 리워크를 하는 경우에는 메서드의 상속을 사용
out은 새로운 걸 창조할 때 유용
ref는 변형을 할 때 유용
Chapter .6 잘 모르는 단어 정리
Content .1 매개변수(= 파라미터)
- 둘 사이를 이어주는 변수
- 개별적으로 초기화할 수 없음
int Add (int x, int y)
{
int z;
z = x + y;
return z;
}
Content .2 재귀함수
- 함수 내부에서 자기 자신을 반복적으로 호출하는 것
- 반복문 대신 함수 자체가 반복을 하게 되고, 조건값이 맞을 때 반환
- 꼭 정지를 할 수 있게 만들어야 함
- 메모리에 여유가 있을 때 사용해야 함

Content .3 옵저버 패턴
- 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락하는 것
Content .4 nomalized
- 이 벡터의 값을 1로 만듦
- 정규화되면 벡터는 동일한 방향을 유지하지만 길이는 1.0
- 벡터가 너무 작아 정규화할 수 없으면 0으로 설정
Content .5 짐벌 락
- 극단적인 각도로 회전할 경우 한 축으로인해 다른 축들이 회전을 잃어버린 것