CREATE YOUR WORLD
Interaction with Object

캐릭터를 따라다니는 오브젝트 구현하기

3min

NavMeshAgent 컴포넌트를 사용하면 제페토 캐릭터를 따라다니는 AI 오브젝트를 만들 수 있습니다.

이 가이드에서는 내 캐릭터를 따라다니는 Pet 형태의 오브젝트를 구현합니다.

Pet 오브젝트 구현하기

1

Navigation (Obsolete) 창을 엽니다.

Document image


Unity 상단 메뉴에서 Window > AI > Navigation (Obsolete)를 클릭해 Navigation (Obsolete) 창을 열어주세요.

2

Pet 오브젝트가 이동 가능한 영역을 정의합니다.

Document image


Navigation (Obsolete) 창의 Object 탭을 클릭한 후, Hierarchy에서 NavMesh에 포함될 바닥, 벽, 장애물 등의 오브젝트를 선택해 Object에 추가해 주세요.

  • Pet 오브젝트가 해당 오브젝트들을 이동 가능한 표면 또는 장애물로 인식하도록 설정하는 과정입니다.

Navigation Static 필드가 체크 되어 있는지도 확인해 주세요.

✏️ NavMesh에 대한 자세한 내용은 다음 영상을 참고해 주세요.


3

NavMesh를 생성합니다.

Document image


Bake 탭을 클릭한 후, 하단의 Bake 버튼을 눌러 NavMesh를 생성합니다.

4

NavMeshAgent를 생성합니다.

Hierarchy에서 Pet 오브젝트를 선택해주세요. 그 다음 Inspector에서 NavMeshAgent 컴포넌트를 추가해 주세요.

  • 여기서 Agent는 NavMesh 내비게이션 시스템을 이용해 이동하는 Pet 오브젝트를 의미합니다.

Agent의 속성 값을 조정하면, Pet의 크기, 이동 속도, 회전 속도, 가속도, 장애물로 인식하는 높이 등을 설정할 수 있습니다.

✏️ NavMeshAgent에 대한 자세한 내용은 다음 링크를 참고해 주세요.

Document image


위 예제에서는 NavMeshAgent의 Stopping Distance를 3으로 설정하여 Pet이 플레이어와의 거리 3에서 멈추도록 설정하였습니다.

5

PetController 스크립트를 생성합니다.

Project 창에서 + 버튼 > ZEPETO > TypeScript를 클릭하여 새로운 제페토 스크립트를 생성한 뒤, 이름을 PetController로 수정합니다.

그 다음, 스크립트를 열어 아래 코드를 복사 후 붙여넣습니다.

TypeScript


스크립트 설명

  • 스크립트가 시작될 때 _target에 내 제페토 캐릭터를 지정해 줍니다.
  • Update 함수에서 매 프레임마다 NavMeshAgent의 SetDestination 함수를 사용하여 내 제페토 캐릭터의 위치를 NavMesh의 목표 지점으로 설정합니다.
6

Pet 오브젝트에 PetController 스크립트를 적용합니다.

Hierarchy에서 Pet 오브젝트를 선택한 후, Inspector에서 Add Component > Zepeto Script를 클릭한 뒤 Script 필드에 생성한 PetController 스크립트를 드래그 앤 드롭합니다.

7

플레이 버튼을 눌러 실행합니다.

Document image


Pet 오브젝트가 내 캐릭터를 따라오면서, 벽과 같은 장애물도 잘 피해 이동하는 모습을 확인할 수 있습니다.



캐릭터 머리 위의 Pet 만들기

캐릭터를 따라다니는 Pet이 아닌, 캐릭터의 신체 위에 올려진 Pet을 구현하고 싶다면 캐릭터에 오브젝트를 붙이는 방식을 사용해 보세요.

✏️ 오브젝트 부착에 대한 자세한 내용은 ZEPETO 캐릭터에 오브젝트 부착하기 가이드를 참고해 주세요. 



1

AttachPetController 스크립트를 작성합니다.

Project 창에서 + 버튼 > ZEPETO > TypeScript를 클릭하여 새로운 제페토 스크립트를 생성한 뒤, 이름을 AttachPetController로 수정합니다.

그 다음, 스크립트를 열어 아래 코드를 복사 후 붙여넣습니다. 

TypeScript


스크립트 설명

  • 스크립트가 시작되면 로컬 플레이어를 찾아서 캐릭터의 애니메이터를 찾게 됩니다.
  • 변수 bodyBone에서 선택한 신체 부분이 캐릭터의 애니메이터에서 어느 부분인지 찾아서 위치를 파악합니다.
  • 파악한 위치에 pet 오브젝트를 Intantiate 하여 생성해 줍니다. 이때 pet 오브젝트의 parent는 앞서 찾은 캐릭터 애니메이터의 신체 부분으로 지정하게 됩니다.
2

새로운 오브젝트에 AttachPetController 스크립트를 적용합니다.

Hierarchy에서 + 버튼 > Create Empty를 클릭하여 새로운 오브젝트를 생성한 뒤, 이름을 AttachPetController로 수정합니다.

그 다음, Inspector에서 Add Component > Zepeto Script를 클릭한 뒤 Script 필드에 생성한 AttachPetController 스크립트를 드래그 앤 드롭합니다.

Pet 필드에는 사용할 Pet 오브젝트를 드래그 앤 드롭하고, bodyBone 필드의 드롭다운 메뉴를 열어서 Pet 오브젝트를 부착할 캐릭터의 신체 부위를 선택합니다.

Document image


플레이 버튼을 눌러 실행하면 Pet 오브젝트가 선택한 신체 부위에 생성된 것을 확인할 수 있습니다.