ZEPETO 캐릭터에 오브젝트 부착하기
6 분
ZEPETO 캐릭터에 오브젝트를 부착하여 캐릭터가 움직일 때 오브젝트도 함께 움직이도록 합니다.

1단계 : 객체 프리팹 준비하기
먼저, 객체를 프리팹으로 변환해야 합니다. 객체를 생성하고, 자산 폴더로 드래그하여 프리팹으로 만듭니다.

객체 프리팹의 예
2단계 : 객체를 캐릭터의 특정 부분에 부착하는 스크립트
- 장면에서 ZEPETO 캐릭터 생성 코드를 기본값으로 구현합니다.
📘 다음 가이드를 참조하십시오. [ZEPETO 캐릭터 만들기]
단계 2-1 : 스크립트 작성하기
1) 계층 만들기 > 빈 객체 만들기 및 이름을 AttachObject로 변경합니다.
2) 프로젝트 만들기 > 만들기 > ZEPETO > TypeScript 및 이름을 AttachObject로 변경합니다.
3) 아래와 같은 샘플 스크립트를 작성합니다.
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { ZepetoCharacter, ZepetoPlayers } from 'ZEPETO.Character.Controller';
import { Transform, Animator, GameObject, HumanBodyBones, Object } from 'UnityEngine';
export default class AttachObject extends ZepetoScriptBehaviour {
// 몸에 부착할 오브젝트 프리팹.
public prefItem: GameObject;
// 오브젝트를 부착할 뼈.
public bodyBone: HumanBodyBones;
private _localCharacter: ZepetoCharacter;
Start() {
ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
// 로컬 플레이어를 찾아 _localCharacter에 설정합니다.
this._localCharacter = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
// _localCharacter의 애니메이터 컴포넌트를 가져옵니다.
const animator: Animator = this._localCharacter.ZepetoAnimator;
// 오브젝트를 부착할 뼈의 위치를 가져옵니다.
const bone: Transform = animator.GetBoneTransform(this.bodyBone);
// 오브젝트 프리팹을 생성합니다.
Object.Instantiate(this.prefItem, bone) as GameObject;
});
}
}
- 스크립트 흐름은 다음과 같습니다:
- Start()
- ZepetoPlayers.instance.OnAddedLocalPlayer 이벤트 리스너를 등록하여 로컬 플레이어가 추가될 때 실행됩니다.
- 로컬 플레이어를 _localCharacter 변수에 설정합니다.
- _localCharacter의 애니메이터 컴포넌트를 가져오고, bodyBone에 지정된 위치를 가져와서 prefItem에 지정된 프리팹을 해당 위치에 생성합니다.
STEP 2-2 : 인스펙터에서 부착 위치 설정하기
1) 스크립트 작성을 마친 후, 스크립트를 AttachObject 객체에 추가합니다.
2) 검사기에서 Pref Item, Body Bone을 할당합니다.
- Pref Item은 객체 프리팹입니다.
- Body Bone은 객체가 생성될 위치입니다.
- 왼손을 선택하여 객체를 손에 쥐고 있는 것처럼 보이게 합니다.

예제 스크립트 설정 화면
3) 재생 버튼을 눌러 실행하면 ZEPETO 캐릭터의 왼손에 객체가 부착된 것을 볼 수 있습니다.
3단계 : 적용
원하는 Body Bone 위치에 객체를 동일한 방식으로 부착할 수 있습니다.
📘 유니티 HumanBodyBones https://docs.unity3d.com/ScriptReference/HumanBodyBones.html
다음은 BuildIt에서 Neck Pillow 객체를 캐릭터의 목에 부착하여 ZEPETO 캐릭터가 목베개를 착용하고 있는 것처럼 보이게 하는 예입니다.

- 원하는 모양을 얻기 위해 객체의 위치와 회전을 적절하게 조정할 수 있습니다.

객체 프리팹 구성 예
- 인스펙터에서 Neck Pillow 객체를 Pref Item에 할당하고 Body Bone에 Neck을 선택합니다.

예제 스크립트 설정 화면