Unity

Unity 1주차 수업 1-3, 1-4내용 정리

hunhun4949 2024. 8. 13. 19:44

1. Animation 생성

위 사진과 같이 Animation 컴포넌트를 생성할 수 있다.

Animation의 LoopTime을 체크해주면 Animation이 반복재생하고 체크해제해주면 한번만 재생한다.

 

Hierarchy에 Animation 컴포넌트를 드래그 앤 드롭 해서 넣어주면 

이런식으로 Animator 컴포넌트가 추가되는걸 볼 수 있다.

 

Animator에서 Controller가 Rtan으로 되어있는걸 볼 수 있다. 

Animation을 컴포넌트에 넣어주면 위에 사진처럼 Rtan 애니메이터 컨트롤러가 자동으로 생성되는데 

 

Animator Controller는 이처럼 FSM로 특정 Animation을 실행하도록 해주는 컴포넌트다. 현재는 Idle밖에 없어서 RtanIdle 애니메이션만 실행되지만 이후로 Attack, Jump등등의 State가 추가되면 여기서 상황에 맞데 State를 바꿔줄 것이다.

 

 

 

이제 ctrl+6을 누르면 Animation창이 뜬다.

Animation 창에서는 특정 시간마다 어느 이미지를 출력할지 드래그 앤 드롭으로 넣어줄 수 있다.

사진에서는 0초, 0.1초, 0.2초마다 프레임이 들어가있는걸 확인할 수 있다.

 

 

2.Script 생성

 

Project에 마우스 우클릭후 Create->C# Script를 눌러주면 스크립트가 생성이 된다.

 

 

기본적으로 생성된 스크립트는 위 사진처럼 생겼다.

여기서 Start()는 씬을 실행했을때 수행할 작업을 나타내고 Update()는 매 프레임마다 수행할 작업을 나타낸다.

참고로 컴퓨터 사양마다 FPS가 다르니 Update()가 1초에 호출되는 빈도도 다르다. 컴퓨터마다 동일한 수행능력을 보이게 하기 위해 보통 deltaTime를 사용한다.

 

DeltaTime은 간단하게 생각해서 프레임간 시간 차이이다. FPS가 50인 컴퓨터에서는 DeltaTime이 0.02초일것이며 FPS가 100인 컴퓨터에서는 DeltaTime이 0.01초이다. 이를 활용해서 모든 컴퓨터에서 동일한 수행능력을 가지게 할 수 있다.

예를 들어보자

update()함수 안에 pos.x += 1 * deltaTime;의 코드가 있다고 생각해보자.

FPS가 50인 컴퓨터의 경우 1초에 Update()가 50번 호출되서 1*0.2 * 50, 즉 x방향으로 1만큼 이동할 것이고

FPS가 100인 컴퓨터의 경우 1초에 1 * 0.1 * 100, 똑같이 1만큼 이동한다.

 

3.캐릭터 움직이지

Object의 움직임은 보통 Transform 컴포넌트에서 담당한다.

transform.position를 통해 캐릭터의 위치를 수정해 줄 수 있다.

예제 코드

 

4.캐릭터 뒤집기

캐릭터를 뒤집기 위해서는 Rotation.y 값을 180도로 회전하거나 Scale.x 값을 -1로 하는 방법이 있지만

Unity에서는 Sprite Renderer에서 Flip이라는 변수로 이미지를 뒤집는게 가능하다.

에디터에서는 위 이미지에 체크해주면 적용이 가능하지만 스크립트에서는 사용하기가 좀 번거롭다.

 

이러한 컴포넌트들을 Script에서 사용하려면 

이런식으로 GetComponent<Component타입>()을 통해 불러와야한다.

참고로 GetComponent는 현재 컴포넌트가 Inspector에서 가지고 있는 컴포넌트만 불러올 수 있다.

 

5.입력 확인하기

Input Class를 사용하면 여러 키 입력을 받아올 수 있다.

Input.GetKeyDown을 사용하면 키보드의 특정 키의 입력 여부를 확인할 수 있다.