유니티 강의
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);
'유니티 이야기 > 유니티 인강' 카테고리의 다른 글
유니티 3D 쿼터뷰 액션게임 ft. 골드메탈 (1) | 2023.09.21 |
---|---|
유니티 강의 (0) | 2023.09.12 |