본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 58번째 걸음-애니메이션 부여하고 앞으로 이동하기

by 인터넷떠돌이 2018. 7. 20.
반응형

안녕하세요?


이번 포스팅에서는 지난번에 실습으로 만드는 게임의 캐릭터인 제이크가 제자리에서 점프를 하고, 이게 허공답보가 되지 않도록 만드는 것을 보았습니다. 이번 시간에는 상황에 맞는 애니메이션을 지정하는 방법을 보여주고, 캐릭터를 앞으로 이동하도록 만들어 보고자 합니다.



먼저 Windows항목에 있는 Animator라는 항목으로 가서, 애니메이터창을 열도록 해 봅니다.



일단 애니메이터뷰에서는 아무것도 안 보이기 때문에, 위 스크린샷에 보이는 것처럼, Player게임 오브젝트의 자식 오브젝트인 sprite라는 오브젝트를 선택하도록 해 봅니다.



그러면 위 스크린샷과 같은 애니메이션뷰가 나오는 것을 볼 수 있는데, 문제는 제가 지금 보고 있는 책에서는 이에 대해서 설명을 해주지 않아서, 자세한 내용을 알 수 없었습니다. 다만 여기서 나오는 Parameters항목을 보면 나와 있는 2개의 Bool타입의 변수가 있는데, 이 변수들에 따라서 애니메이션이 작동되고 작동되지 않고가 결정이 된다는 것을 기억해야 합니다.




그리고 Playercontroller.cs에서 위 스크린샷과 같이 광역변수로 Animator를 담는 변수인 animator를 선언 하도록 해 봅니다.



스크립트를 저장하고 다시 유니티5로 돌아가서 Player게임 오브젝트를 선택하고 나서, 인스펙터뷰를 보면, 위 스크린샷과 같이 Animator라는 변수를 지정해 줄 것을 요구하고 있는 것을 볼 수 있습니다.



여기다가 Player>sprite라는 게임 오브젝트를 드래그 앤 드롭으로 끌어다 놓아서 놔 두도록 합니다. 이렇게 해서 일차적인 작업은 완료가 되었습니다.




이제 PlayerController.cs에 위 스크린샷과 같이 Start와 Update에 밑줄친 코드를 추가해 주도록 합니다. 시작하자 마자 isAlive라는 애니메이션을 재생하라는 명령어를 내리고, 다음으로는 점프시마다 isGrounded에 반응하는 애니메이션을 IsGrounded()라는 함수의 리턴값에 따라서 애니메이션을 재생하고 말고를 결정하게 해 줍니다.



이제 시작하자 마자 주인공 캐릭터는 앞으로 걸어가는 애니메이션을 재생하는 것을 볼 수 있고, 점프를 하면, 그에 걸맞는 애니메이션이 재생된다는 것을 볼 수 있습니다.



이제 앞으로 걸어가는 동작이 없습니다. 이렇게 캐릭터를 앞으로 걸어간다-여기서는 좌측끝에서 우측 끝으로 걸어가는 것인데, 여기서는 한쪽 방향으로 일정한 힘을 가해주면 됩니다. 그를 위해서 우선 달리는 스피드를 설정해야 하니, 위 스크린샷에 나와 있는 것처럼 광역변수를 하나 선언해 주도록 합니다.




그리고 FixedUpdate()라는 메소드를 추가해 주도록 합니다. 이 메소드는 Update()가 프레임마다 호출이 되는 메소드라면, FixedUpdate()는 일정시간마다 호출이 되는 메소드인데, 일정한 힘을 주는 명령어를 코딩할 때 주로 사용이 된다고 합니다. 그런데 여기서 if문이 왜 있느냐 하면, 이게 있어야 무제한적인 가속이 되는 것을 방지할 수 있기 때문입니다.


그래서 rigidBody의 X축 속도가 runningSpeed보다 적을 때만 힘이 작용하도록 IF문으로 제한을 걸어둔 것이며, Vector2는 x축은 runningSpeed로 만들고, Y축은 rigidBody.velocity.y라고 해서, 이 스크립트가 적용된 오브젝트의 Y좌표를 그대로 유지하도록 만들었습니다.



최종적인 결과물입니다. 이렇게 해서 연습으로 만드는 게임의 캐릭터가 앞으로 걸어가는 것 까지 만드는 것을 성공하였습니다. 이렇게 함으로써 유니티 5.x와 함께하는 C# 첫걸음이라는 책의 챕터9를 완료했습니다. 이어서 계속되는 실습을 하여서 비록 연습으로 만드는 것이기는 하지만, 어였단 게임하나 만드는 것으로 해 보겠습니다.

반응형