유니티 이야기/유니티 인강

유니티 기초 강좌 ft. 골드메탈

smile blog 2023. 9. 18. 11:12

유니티 강의

https://www.youtube.com/playlist?list=PLO-mt5Iu5TeZa9dsqMVvXuSfVxwR_2AOz 

 

유니티 입문 간단 3D 게임 [BE1]

유니티를 처음 접하는 입문자분들을 위해서 쉽게 이해할 수 있도록 구성된 기초 강좌 채널

www.youtube.com


1. 게임 구조와 프로그래밍

게임의 구성

 

연극 > 막 > 인물&소품 > 대본

게임 > 장면 > 오브젝트 > 스크립트


2. C# 프로그래밍 기초

변수, 그룹형 변수, 연산자, 키워드, 조건문, 반복문, 함수, 클래스


3. 유니티 게임오브젝트의 흐름

오브젝트 라이프사이클

 

<초기화 영역>

  • Awake: 게임 오브젝트 생성할 때, 최초로 딱 한번만 실행되는 함수
  • Start: 업데이트 시작 직전, 최초로 딱 한번만 실행되는 함수

<물리연산 영역>

  • FixedUpdate: 물리 연산 업데이트 함수, 고정된 실행주기로 CPU를 많이 사용

<게임로직 영역>

  • Update: 게임 로직 업데이트 함수, 60프레임, 사용되는 컴퓨터 환경에 따라 실행주기 떨어질수 있음
  • LateUpdate: 모든 업데이트 함수 실행 후 마지막으로 실행되는 함수 , ex) 캐릭터를 따라가는 카메라 처리

<해체 영역>

  • OnDestroy: 게임 오브젝트가 삭제될 때

<게임 오브젝트는 삭제하지 않고 켜고 끌수도 있다. 활성화, 비활성화>

  • 활성화 - 초기화 영역과 물리연산 사이에 위치함, OnEnable: 게임 오브젝트가 활성화 되었을때
  • 비활성화 - 모든 업데이트가 끝난 후, OnDisable: 게임 오브젝트가 비활성화 되었을 때


4. 키보드 마우스로 이동시켜보자!

- 키 입력

Input : 게임 내 입력을 관리하는 클래스

 

클릭 상태 : down, stay, up 3가지 있음

 

anyKey : 아무 입력을 받으면 true

 

GetKey : 키보드 버튼 입력을 받으면 true

 

GetMouseButton : 마우스 버튼 입력을 받으면 true

 

GetButton : Input 버튼 입력을 받으면 true

 

- 버튼 설정 & 입력

edit -> projectsettings -> inputmanager -> axes

: 모든 이동 방식을 스크립트를 이용하지 않고 바꿀 수 있음

: 18개 키가 기본 설정 되어 있음

: 사용자 지정으로 추가도 할 수 있음

 

- 축 입력

  • GetAxis : 수평, 수직 버튼 입력을 받으면 float
  • 오브젝트는 변수 transform을 항상 가지고 있음

 

- 오브젝트 이동

  • Transform : 오브젝트 형태에 대한 기본 컴포넌트
  • Translate : 벡터 값을 현재 위치에 더하는 함수
  • Vector2 = 2차원
  • Vector3 = 3차원

 

- 입력을 활용한 오브젝트 이동

Vector3 vec = new Vector3(x, y, z);

  • x = 횡, Horizontal
  • y = 종, Vertical
  • z = 점프할 때 쓰는 축인 것 같다!

5. 목표 지점으로 이동시키기

Vector3 클래스에서 제공하는 이동 함수

1. MoveTowards

: 등속이동, 매개변수는 (현재위치, 목표위치, 속도)로 구성, 마지막 매개변수에 비례하여 속도 증가

Vector3 target = new Vector3(8, 1.5f, 0);

 

void Update() {

transform.position=

Vector3.MoveTowards(transform.position, target, 2f);

2. SmoothDamp

: 부드러운 감속이동, 마지막 매개변수에 반비례하여 속도 증가

Vector3 velo = Vector3.zero;

transform.position =

Vector3.SmoothDamp(transform.position, target, ref velo, 0.1f);

※ ref: 참조 접근 -> 실시간으로 바뀌는 값 적용 가능

3. Lerp

: 선형 보간, SmoothDamp 보다 감속시간이 김, 마지막 매개변수에 비례하여 속도증가(최대값1), 0~1까지의 값을 가짐

transform.position =

Vector3.Lerp(transform.position, target, 0.05f);

4. Slerp

: 구면 선형 보간, 호를 그리며 이동, 포물선 이동

transform.position =

Vector3.Slerp(transform.position, target, 0.05f)


6. 이동거리를 공평하게! 델타타임

어이~ 공평하게 하자구~

Time.deltaTime : 1 프레임에 걸린 시간

 

Translate : 벡터에 곱하기

// transform.Translate(Vec*Time.deltaTime);


Vector 함수 : 시간 매개변수에 곱하기

// Vector3.Lerp(Vec1, Vec2, T*Time.deltaTime);