---
title: ZEPETO 캐릭터에 오브젝트 부착하기
slug: world-sdk-guide-kr/VS9V-zepeto
docTags: 
createdAt: 2024-09-02T08:34:13.134Z
---

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

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-RVU1Pj2VnYVimqUgTc6-f-20240904-102420.gif" size="40" width="800" height="648" position="center" darkWidth="800" darkHeight="648" showCaption="false"}



## 1단계 : 객체 프리팹 준비하기



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-a1A3QEkz2EOYUKkkmWhU6-20240904-102418.png "객체 프리팹의 예")



## 2단계 : 객체를 캐릭터의 특정 부분에 부착하는 스크립트



- 장면에서 ZEPETO 캐릭터 생성 코드를 기본값으로 구현합니다.

:::hint{type="info"}
**📘&#x20;**&#xB2E4;음 가이드를 참조하십시오. \[[ZEPETO 캐릭터 만들기](docId\:QuP_q-PuGs7GYvyosl_VA)]
:::



### 단계 2-1 : 스크립트 작성하기

1\) 계층 만들기 > 빈 객체 만들기 및 이름을 AttachObject로 변경합니다.

2\) 프로젝트 만들기 > 만들기 > ZEPETO > TypeScript 및 이름을 AttachObject로 변경합니다.

3\) 아래와 같은 샘플 스크립트를 작성합니다.

```typescript
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은 객체가 생성될 위치입니다.
  - 왼손을 선택하여 객체를 손에 쥐고 있는 것처럼 보이게 합니다.



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-da9YMvrZkYu620CaOeWE0-20240904-102418.png "예제 스크립트 설정 화면")



3\) 재생 버튼을 눌러 실행하면 ZEPETO 캐릭터의 왼손에 객체가 부착된 것을 볼 수 있습니다.



## 3단계 : 적용



원하는 Body Bone 위치에 객체를 동일한 방식으로 부착할 수 있습니다.

:::hint{type="info"}
**📘 유니티 HumanBodyBones**
[https://docs.unity3d.com/ScriptReference/HumanBodyBones.html](https://docs.unity3d.com/ScriptReference/HumanBodyBones.html)
:::



다음은 BuildIt에서 Neck Pillow 객체를 캐릭터의 목에 부착하여 ZEPETO 캐릭터가 목베개를 착용하고 있는 것처럼 보이게 하는 예입니다.

::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-NvEWim8bsEaTZfU8ZnIWz-20240904-102420.gif" size="58" width="800" height="648" position="center" showCaption="false"}



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-nQ0DQLTax73xt5ioGw0Hm-20240904-102418.png "객체 프리팹 구성 예")



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

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-_Id79tFqG3jX3dvvG1Cjb-20240904-102418.png "예제 스크립트 설정 화면")

