플레이어의 기본적인 움직임을 구현해보자.
Player Object
이 글에서 쓰는 Sprite Sheet: rvros.itch.io/animated-pixel-hero
Sprite Import
역시 적당한 폴더를 만들고 원하는 플레이어 Sprite를 찾아 Project에 드래그한다.
이 글에서 쓰는 Sprite Sheet는 이미 각 Sprite로 나누어져있기 때문에 따로 Slice할 필요 없다.
대신 Pixels Per Unit만 16으로 바꿔주자
Slice 하는법: lektion-von-erfolglosigkeit.tistory.com/60
Empty Object 생성
그럼 이제 Player라는 빈 오브젝트를 하나 만들어 주자.
Hierarchy 우클릭 - Create Empty 클릭 - Player로 이름 변경
저 빈 오브젝트에 플레이어 Sprite가 나타나게 해보자
SpriteRenderer 추가
Hierarchy에서 Player를 선택 - Inspector에서 Add Component 클릭 - Sprite Renderer 검색 및 추가
Sprite Renderer - Sprite에 적당한 플레이어 Sprite를 하나 드래그해준다. (ex. adventurer-idle-00)
하지만 추가해도 플레이어가 보이지 않는다.
그 이유는 Player의 Sorting Layer가 Defualt이기 때문이니 Sorting Layer를 하나 더 만들어주자. (위치 주의!)
그리고 Player의 Sorting Layer를 Player로 바꾸면 플레이어가 보이게 된다.
만약 보이지 않는다면 Player의 Transform 우클릭 - Reset 클릭
Other Components
Player에 Rigidbody2D와 BoxCollider2D를 추가해준다.
Box Collider 2D의 Edit Collider 옆 버튼을 눌러 플레이어의 크기에 맞게 조정
Rigidbody는 이동, 점프 등에 사용되고 BoxCollider는 몬스터의 공격이나 땅과의 접촉을 감지할 것이다.
Player Animaiton
이동하거나 점프할 때 필요한 애니메이션을 먼저 만들어보자
혹시 Animation이나 Animator 창이 없다면 미리 추가한다.
좌측 상단 메뉴바 - Window - Animation - Animation, Animator
Creating Animation
Player 오브젝트를 선택하고 Animation창의 Create 버튼을 눌러준다.
Animation이라는 폴더를 생성하고 File name를 Player_idle로 변경후 저장
idle은 보통 상태, 대기 상태를 말한다. 직역하면 쉬고있는 상태?
Frame 조절을 위해 Show Sample Rate를 체크해준다.
idle에 해당되는 스프라이트를 찾아 모두 선택하고 드래그한다. (Frame은 보통 12로 하지만 idle은 8로 설정했다.)
이후 플레이버튼을 누르면 애니메이션이 재생되는 것을 볼 수 있다.
같은 방법으로 move와 Jump 등을 만들어주자
Animator
Hierarchy에서 Player 오브젝트를 선택하면 Animator라는 Component가 새로 추가되있다.
Controller를 더블클릭하면 Animator 창으로 들어간다.
Animator 창에는 우리가 만들었던 Animaiton Clip과 Entry, AnyState, Exit 등이 있다.
먼저 배경에 우클릭해서 Crate State- Empty로 빈 Clip을 만들고 이름을 Gateway로 바꾼다.
이미 있는 Clip을 우클릭하고 Make Transition 클릭하면 화살표가 나오고 다른 클립에 다시 클릭하면 연결된다.
Transition을 다음과 같이 연결한다.
다음은 상태를 나타내는 변수를 만들어야 한다.
현재는 idle, move, jump가 필요하다
Parameters에 +를 누르고 bool 선택, 이름을 idle로 바꾼다.
마찬가지로 ove, Fall, Grounded를 만들고 bool 대신 trigger로 jump를 하나 만든다.
화살표를 클릭하면 상태전환 조건과 대기 시간 등을 설정할 수 있다.
Exit Time은 해당 애니메이션을 얼마나(%) 재생하고 넘어갈껀지를 설정
만약 1로 설정하면 조건이 만족되어도 애니메이션을 전체 한번 재생하고 넘어간다.
Transition Duration은 대기 시간
만약 0.2로 설정하면 조건이 만족됐을때 0.2초 후에 넘어간다.
필요에 따라 설정할 수 있지만 빠르게 애니메이션을 전환하기 위해
기본적으로 Has Exit Time을 체크 해제하고 Transition Duration를 0으로 설정한다.
단, Player_Jump → Player_Roll에서는 Exit Time를 1으로 설정해서 점프 애니메이션은 모두 재생되도록 하자
Player Movement
PlayerController 스크립트 작성
Animator와 연결
n단 점프 구현
다음엔 복잡한 움직임 구현
벽점프, 코너잡고 올라가기, 낮은 점프
'중단된 프로젝트 > 2D Platformer' 카테고리의 다른 글
Unity 2D 플랫포머 만들기 (1) Tile Maps (0) | 2020.09.06 |
---|---|
Unity 2D 플랫포머 만들기 (0) 프로젝트 개요 (0) | 2020.09.04 |