{TIL} Unity 입문 교육 1일차 정리

Kwaksang·2024년 5월 8일

TIL

목록 보기
14/37
post-thumbnail

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의 주요 기능

  1. 프로젝트 관리 : 프로젝트 생성
  2. 씬(Scene) : 장면과 화면 구성
  3. 에셋 (Asset) : 리소스 관리
  4. 컴파일 및 빌드 : 코드를 컴파일 & 실행 가능한 게임으로 빌드
  5. 디버깅 : 오류를 찾고 수정
  6. 에디터 확장 기능 : 유니티 에디터를 사용자 요구에 맞게 확장

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 을 동시에 사용함

Chapter .2 InputManager, 무엇이 문제인가?

Content .1 New Input System

  1. Input Action
  • 입력 행동을 정의
  • ex> "점프"라는 행동의 정의 후 트리거하는 키 or 버튼을 지정
  1. Input Action Asset
  • 입력 행동을 그룹화하는 방법
  1. Player Input Component
  • 자동으로 입력 행동을 처리 후 해당 게임 오브젝트에 메세지 전송

Content .2 New Input System의 장점

  1. Cross-Platform Compatibility
  2. Rebinding
  3. Multiplayer Support

Chapter .3 충돌과 컴포넌트의 이해

Content .1 Collider

  1. 게임 오브젝트에 물리적 형태 부여
  2. 충돌 감지를 가능하게 함
  3. BoxCollider 사각형, SphereCollider 구형, MeshCollider 복잡한 메시 형태 제공

Content .2 Rigidbody

  1. 게임 오브젝트에 물리 법칙을 적용
  2. 중력에 영향을 받거나 힘과 토크를 통해 움직일 수 있음
  3. 충돌이 되는 대상 중 "한 쪽"에는 Rigidbody가 붙어있어야 Collider와 충돌할 수 있음
  4. Trigger 충돌도 Rigidbody 필요

Content .3 충돌 발생 시

  1. Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트 발생
  2. 2D는 각각 뒤에 2D를 붙임

Content .4 타일맵

  1. Tilemap Renderer : Tilemap의 모양을 실제로 그리는 역할
  2. Tilemap Collider 2D : Tilemap에 물리적인 경계를 추가하는 데 사용
  3. 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 쿼터니언 심화

  1. Quaternion.Euler : 오일러각을 쿼터니언으로 변경 (ex> Quaternion.Euler(0f,0f,90f))
  2. Quaternion.LookRotation : 앞과 위를 특정한 방향으로 하는 회전 쿼터니언 생성
  3. Quaternion.Slerp : 쿼터니언과 다른 쿼터니언 사이의 내분점을 알 수 있음

Content .3 삼각함수 기초와 아크탄젠트

  1. 삼각함수
  • 각도를 통해 삼각형들의 각 변의 비율을 알아낼 수 있는 함수
  • Sin : 높이 / 빗변
  • Cos : 밑변 / 빗변
  • Tan : 높이 / 밑변
  1. 아크탄젠트(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;
}

// x, y 가 매개변수

Content .2 재귀함수

  • 함수 내부에서 자기 자신을 반복적으로 호출하는 것
  • 반복문 대신 함수 자체가 반복을 하게 되고, 조건값이 맞을 때 반환
  • 꼭 정지를 할 수 있게 만들어야 함
  • 메모리에 여유가 있을 때 사용해야 함

Content .3 옵저버 패턴

  • 한 객체의 상태가 변경되면 그 객체에 의존하는 모든 객체에 연락하는 것

Content .4 nomalized

  • 이 벡터의 값을 1로 만듦
  • 정규화되면 벡터는 동일한 방향을 유지하지만 길이는 1.0
  • 벡터가 너무 작아 정규화할 수 없으면 0으로 설정

Content .5 짐벌 락

  • 극단적인 각도로 회전할 경우 한 축으로인해 다른 축들이 회전을 잃어버린 것
profile
게임은 재미와 기능!

0개의 댓글