Prosto

따라하는 유니티 2D 프로젝트ⓐ -7 본문

Programing/Unity 3D

따라하는 유니티 2D 프로젝트ⓐ -7

Prosto 2016. 9. 19. 02:01

 

따라하는 유니티 2D 프로젝트ⓐ 강좌 일곱 번째 시간입니다.

이번에 다룰 내용은 애니메이션(애니메이터)에 대한 두 번째 시간입니다.

이번에는 애니메이션 추가도 해보고 기존의 애니메이션을 수정하는 방법과 제거도 보겠습니다.

*이번 부분은 '애니메이션-2'이기도 합니다.

 

 

그럼 시작하겠습니다.

 

 

가장 먼저 저번에 작업했던 프로젝트를 실행합니다. 그리고 순서대로 직접 해보며 따라오시면 됩니다.

 

저번에 작업했던 애니메이션을 봅시다.

이때 특정 애니메이션을 보고(수정하고) 싶다면 해당되는 오브젝트를 선택한 후

Animation 패널을 확인해보면 됩니다.(Animator도 마찬가지)

Hierarchy 탭에서 Ball을 선택한 후 Animation에 들어가세요.

기존에 점프에 반응하는 시간이 너무 길었죠.

(그리고 내려가는 속도와 올라가는 속도를 조절합니다.)

0:00 - 0:04 - 0:07순으로 위치시킵니다.

 

그리고 이번에는 1초에 실행가능 프레임을 40으로 증가시킵니다.

 

 

소스도 바꿔줘야겠죠?

jump1 트리거를 온시킨 후에 애니메이션 처리를 기다리는 작업인

yield return new WaitForSeconds(시간)부분의 시간을 0.15f로 바꿔줍니다.

 

 

이번에는 우리가 높은 점프에 사용할 애니메이션을 똑같은 방식으로 만들어보겠습니다.

'ballJump_1' 이름 부분을 클릭하면 밑으로 항목이 나옵니다.

그 중 Create New Clip을 눌러 새로운 애니메이션을 만듭니다.

 

 

저번에 했던 것처럼 이렇게 이름을 지정해주고 저장(S)를 누르면 되겠죠?

 

 

Scale 추가도 저번과 같습니다.

별도로 스크린샷은 없지만

혹 기억이 안 나신다면

[Add Property]버튼을 클릭한 후 - Transform - Scale 옆의 '+'를 누르시면 됩니다.

 

이번에도 똑같이 Samples는 40,

0:00 - 0:04 - 0:07순으로 위치시킵니다.

(추가는 마름모 사이 더블클릭 기억하시죠?)

 

이때 중간 위치(추가된 마름모)에서 Scale 부분을 X 1.1, Y 0.8로 변경해줍니다.

(저번에는 1.05,0.9였는데 늘어났으니 더 눌리겠죠?)

 

 

그러면 트리거도 추가해줄까요?

Parameters에 이름 검색 옆의 '+'를 눌러서 나오는 항목 중

저번처럼 Trigger를 선택해주세요.

 

이름은 jump2입니다.

 

 

jump2에 저번에 jump1과 마찬가지로 연결해줘야겠죠?

방향에 따라 jump_1과 똑같지만, 스크린샷은 첨부할게요.

참고해서 하시면 됩니다.

 

먼저 New State -> ballJump_2 방향의 트랜지션이죠.

이렇게 컨디션(jump2 trigger)으로만 실행되도록 만듭니다.

 

이번에는 ballJump_2 -> New State 부분의 트랜지션입니다.

선택한 후 똑같이 세부 항목을 지정해주면 되겠죠?

 

여기서 Has Exit Time을 하는 이유가

애니메이션 한번 실행한 후 다시 돌아가기 위해서라고 했었죠?

Exit Time 0.99 나머지 0으로 해줍니다.

 

 

자 이렇게 수정했습니다.

if로 작성된 내용은 이렇습니다.

1. checkTime이 0.15f보다 크면 ->2로

2. checkTime이 0.25f보다 작으면

PlayerAni.SetTrigger("jump1");실행

그렇지 않으면(이상이면) ->3으로

3. PlayerAni.SetTrigger("jump2");실행

 

그리고 밑에 yield return 부분은 checkTime이 0.15초를 초과했다면

어떤 트리거를 실행시키든 무조건 0.15초 기다리게 되겠죠.

 

여기서 나뉜 구간을 보면 이렇습니다.

0~0.15까지는 점프해도 반동 없음(트리거x).

0.16~0.24까지는 1단계 점프 반동(jump1 트리거)

0.25~0.35까지는 2단계 점프 반동(jump2 트리거)

 

 

실제로 실행해서 높은 점프를 해보면(누른 시간인 checkTime이 0.25이상)

ballJump_2도 잘 작동되는 걸 확인할 수 있습니다.

 

여기까지 하셨으면 기본 - 점프1단계 - 점프2단계

세 개의 애니메이션으 왔다갔다하는 정도까지 완성했습니다.

(여기서 다른 애니메이션들이 있었어도 서로 잘 왔다갔다했겠죠?)

 

 

이번에는 열심히 설정해둔 부분이지만,

제거하고 다시 설정해봅시다.(제거/수정도 해봐야겠죠.)

 

New State에서 ballJump_1로 가는 방향의 트랜지션을 선택합니다.

 

그리고 Delete 키를 눌러주세요.

그러면 Delete Selectd asset?이라는 타이틀과

New State -> ballJump_1이라는 내용이 나옵니다.

 

방향이 맞는지 확인하고

Delete 버튼을 눌러주세요.

 

 

마찬가지로 New State -> ballJump_2 방향도 클릭한 후 Delete하여 지워주세요.

 

 

그리고 저번에 했던 것처럼 Make Transition으로

새로운 트랜지션을 만들어 봅시다.

Any State에서 우측클릭하여 ballJump_1에 연결하고

다시 Any State에서 우측클릭하여 ballJump_2에 연결해주세요.

 

여기서 Any State에서 연결하는 트랜지션은 기본 트랜지션과 달리

어떠한 상황에서도 조건이 맞으면 발동되면 실행시킵니다.

우리가 이쪽에서 jump로 연결시킨 이유는

어떠한 상황에서도 점프 트리거가 불리면 곧바로 점프 애니메이션을 동작시키기 위해서죠.

(다른 동작 - 착지 애니메이션을 넣을 텐데 착지 중이라고 점프 애니메이션이 안 불리고 있음 곤란하죠.)

 

 

이런 모습을 하고 있으면 제대로 추가가 된 겁니다.

 

저번에 ballJump_1에 추가한 것과 같이 조건에 맞게 발동되도록

컨디션에 트리거를 달아줍시다.

일단 Any State -> ballJump_1 트랜지션을 선택해주세요.

 

 

이렇게 Has Exit Time부분은 다 필요없으니 지워주고

Conditions에 jump1 트리거를 달아줍니다.

 

 

이번에는 Any State -> ballJump_2에도 같은 작업을 해줍시다.

 

 

이렇게 컨디션 부분에 jump2 트리거를 달아주세요.

 

그러면 Any State에서의 트리거 발동 시

jump1, jump2 애니메이션이 시작될 테고

그 애니메이션이 끝나면(Exit Time) New State로 가서 머물고있겠죠?

그러다가 또 트리거가 불리면 점프 애니메이션이 시작되고요.

 

 

우리가 이번에는 아까 했던 작업과 같이 떨어졌을 때 애니메이션을 추가해봅시다.

점프할 때만 반동이 있고 떨어졌을 때는 없다면 뭔가 심심하죠.

 

이렇게 Parameters에서 '+'를 눌러 drop1, drop2 트리거를 추가해주시고

Animation 탭에서 balldrop_1, balldrop_2 애니메이션을 Create하고

New State와 drop 애니메이션들을 연결해주세요!

 

 

balldrop_1 애니메이션입니다.

다른 점은 중간의 마름모 위치죠?

기존 점프에는 0:00 - 0:04 - 0:07순이었지만

떨어질 때에는 0:00 - 0:03 - 0:07순이죠.

 

아 그리고 중간 마름모에서 Scale은 jump_1과 동일하게 했습니다.

X 1.05 Y 0.9 Z 1.0

 

balldrop_2도 보면 balldrop_2와 같은 위치죠.

여기서도 중간 마름모에서 Scale은 jump_2와 동일하고요.

X 1.1 Y 0.8 Z 1.0

 

 

그러면 각각 트랜지션에 어떤 설정을 했는지 살펴볼까요?

먼저 New State -> balldrop_1입니다.

 

New State에서 balldrop_1로 가는 트랜지션엔

컨디션 drop1 트리거만 등록되어있네요.

 

 

다음으로 balldrop_1 -> New State 입니다.

 

balldrop_1에서 New State로 가는 트랜지션엔

Has Exit Time으로 애니메이션이 종료되면 다음 애니메이션으로 가도록 되어있네요.

 

 

그 다음으로 New State -> balldrop_2입니다.

 

New State에서 balldrop_2로 가는 트랜지션엔

컨디션 drop2 트리거만 등록되어있네요.

 

 

다음으로 balldrop_2 -> New State 입니다.

 

balldrop_2에서 New State로 가는 트랜지션엔

Has Exit Time으로 애니메이션이 종료되면 다음 애니메이션으로 가도록 되어있네요.

 

그러면 이제 모든 트랜지션에 설정을 마쳤습니다..

 

이제 실제로 작동시킬 drop 트리거들을 등로해줍시다.

jump에서의 조건과 동일하게

0.24까지는 drop1을 그 이후는 drop2 트리거를 셋팅해주세요.

(이때는 보면 yield가 안 보이죠? 점프 후에 애니메이션은 실행하되

별도로 기다림은 없는 것입니다.

애니메이션 중이라고 점프를 못하거나 하면 안 되겠죠.)

 

(중간에 점프하면 새로운 트리거를 Any State에서 발동시켜 점프 애니메이션으로 넘어가겠죠?)

 

 

자, 실제로 여기까지 한 후 실행한 모습입니다.

실행해보면 점프 후 착지 시에도 약간의 반동을 받는 모습이죠?

여기까지 했으면 애니메이션/애니메이터 기능을 사용할 수 있을 것입니다.

필요에 따라 반동을 받는 시간을 늘리거나, 줄여주면서 가장 이상적인 형태를 찾아보면 되겠죠?

 

 

지금까지 따라하는 유니티 2D 프로젝트ⓐ -7번 강좌를 보셨습니다.

이번 시간에는 저번 시간에 이어 애니메이션과 애니메이터를 이용해봤습니다.

이번에는 제거, 수정까지 해봤고요.

어떻게 애니메이션들이 있으니 조금 더 볼만해졌나요?

 

 

다음 유니티 2D 프로젝트ⓐ의 여덟 번째 강의에서는

일시정지 기능과 게임 종료 처리 작업을 하겠습니다.

(UI와 관련된 작업들이죠.)

 

 

 

고생하셨습니다. 따라오며 하니 좀 도움이 되셨나요?

그럼 프로젝트의 다음 단계를 진행하며 새로운 것들에 대해서는 지금과 같이 설명하며 진행하도록 하겠습니다.

 

 

궁금한 점 있으시면 댓글이나 따로 메일로 질문하시면 시간되는 대로 답변드리겠습니다. ( 연락 )

Comments