반응형

이번에는 캐릭터에 애니메이션을 적용하고 점프 기능을 추가하려고 합니다.

따라 해보시면서 궁금하신 부분들은 댓글 남겨주세요.

 

지난 시간에는 HeroInput 이라는 스크립트로 캐릭터의 위치를 조작할 수 있었습니다.

그러나 오늘은 데모 버전에서 사용된 스크립트를 그대로 사용하려고 해요.

게임 개발 튜토리얼에서는 무료 에셋들을 사용해서 간단한 게임을 만드는 방법을 알려드리고 있습니다.

그래서 실제로 게임 개발 시 필요한 세세한 부분들게임 개발 튜토리얼 이후에 포스팅하려고 합니다.

 

1. 데모 스크립트 사용하기

우선, 데모 버전에서 사용된 스크립트를 확인해보죠.

파일은 Assets > Prototype Hero Demo - Pixel Art > Demo 위치에 있어요.

그리고 스크립트의 명칭은 PrototypeHeroDemo 입니다.

 

데모에서 사용된 스크립트의 경로

 

PrototypeHeroDemo 스크립트를 Inspector 윈도우에서 보면 필요한 소스 코드들이 작성되어 있습니다.

지금은 소스 코드를 이해하는 대신에 사용하는 방법을 알려드릴게요.

 

PrototypeHeroDemo 스크립트의 내용

 

PrototypeHeroDemo 스크립트를 끌어서 캐릭터 오브젝트에 적용해 주세요.

 

PrototypeHeroDemo 스크립트를 캐릭터에 적용

 

그러면 아래처럼 캐릭터의 Inspector 윈도우에 스크립트가 적용된 것을 보실 수 있습니다.

 

PrototypeHeroDemo 스크립트가 적용된 모습

 

이제는 앞서 사용했던 Hero Input 스크립트를 제거해 주세요.

Hero Input 스크립트 오른쪽의 점 세개를 클릭하시고 Remove Component를 클릭해서 스크립트를 제거하실 수 있습니다.

 

스크립트 삭제 방법

 

그 후에 Scene을 실행하면 아래처럼 에러가 발생합니다.

에러 내용은 "NullReferenceException: Object reference not set to an instance of an object" 이네요.

새로 적용한 스크립트에 설정하지 않은 것들이 있어서 에러가 발생합니다.

 

NullReferenceException: Object reference not set to an instance of an object 에러 발생

 

2. 이펙트들 추가하기

캐릭터의 Inspector 윈도우를 보시면 Effects 부분에 None (Game Object) 라고 적혀 있는게 보이네요.

이게 바로 위의 에러를 발생시키는 원인입니다.

필요한 오브젝트가 설정되어 있지 않기 때문에 None (Game Object)라고 표시되어 있어요.

 

캐릭터 스크립트의 에러 원인

 

설정이 필요한 오브젝트들은 캐릭터가 이동할 때 나오는 이펙트들이에요.

그래서 Assets > Prototype Hero Demo - Pixel Art > Demo 경로에 있는 JumpDust, LandingDust, RunStopDust 파일들을 동일한 이름에 배치해 주세요.

바로 아래처럼 적용하시면 됩니다.

 

이펙트 파일들이 적용된 모습

 

그런데 이렇게 설정해도 아직 에러가 발생합니다.

설정해야 될 것들이 남아있기 때문이죠.

 

3. GroundSensor 추가하기

캐릭터 하위로 GroundSensor 라는 오브젝트를 추가해 주세요.

GroundSensor 오브젝트는 캐릭터가 지형과 접촉된 상태인지 확인하는 역할을 합니다.

그리고 Assets > Prototype Hero Demo - Pixel Art > Demo 위치에 있는 Sensor_Prototype 파일을 GroundSensor 오브젝트로 끌어서 적용해 주세요.

 

GroundSensor에 Sensor_Prototype 파일 적용

 

그러면 아래처럼 Sensor_Prototype 스크립트가 적용된 모습을 보실 수 있습니다.

그리고 GroundSensor 오브젝트가 지형과 접촉된 상태인지 확인하기 위해서 Box Collider 2D를 추가해 주세요.

그 후에는 빨간색 박스의 데이터를 참고해서 여러분의 데이터들을 수정해 주세요.

GroundSensor의 위치와 콜라이더 박스의 크기 조절을 위해서 변경해 줄 필요가 있습니다.

 

Sensor_Prototype과 Box Collider 2D가 적용된 모습

 

그리고 캐릭터의 Rigidbody 2D의 값을 수정해 주세요.

특히 Freeze RotationZ값을 꼭 체크해 주세요.

그래야 캐릭터가 이동하면서 넘어지지 않습니다.

 

캐릭터 Rigidbody 2D의 데이터 변경

 

그럼 이제 Scene을 다시 실행해볼까요?

그러면 또 다시 에러를 만나게 됩니다.

이번 에러는 "MissingComponentException: There is no 'Animator' attached to the "PrototypeHero" game...(생략)"이네요.

캐릭터에 Animator가 없다는 것을 의미합니다.

그리고 이 Animator는 캐릭터의 애니메이션을 위해서 사용됩니다.

 

 

캐릭터의 Animator 에러

 

4. Animator 추가하기

캐릭터에 Animator를 추가해 주세요.

Animator는 아래처럼 Miscellaneous 하위에 있습니다.

 

Animator 추가 방법

 

Animator를 추가하면 아래처럼 적용된 모습을 확인하실 수 있어요.

그리고 Controller를 선택하시면 선택 가능한 목록들이 나타납니다.

여기서 PrototypeHero를 선택해 주세요.

PrototypeHero는 Assets > Prototype Hero Demo - Pixel Art > Animations > Prototype Hero 위치에 있습니다.

 

Controller 선택 화면

PrototypeHero를 선택하시면 아래처럼 Animator 컴포넌트의 Controller 부분에 PrototypeHero 컨트롤러가 보입니다.

 

PrototypeHero 컨트롤러가 선택된 모습

 

이제 플레이 버튼을 클릭해서 실행하면 에러는 사라지고, 캐릭터가 움직일 때마다 애니메이션 되는 모습을 확인하실 수 있어요.

그런데 아직은 어색한 모습들이 보이네요.

 

데모 스크립트로 캐릭터 애니메이션과 점프 기능 추가

하는 일이 많다보니 자료만 준비해놓고 이제서야 글을 올리네요.

혹시 질문사항, 수정이 필요한 부분이나 개선점 등이 있으시다면 댓글로 남겨주세요.

반응형

+ Recent posts