---
title: ZEPETOキャラクターにオブジェクトを取り付ける
slug: world-sdk-guide-ja/3BS1-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" showCaption="false"}



## ステップ 1 : オブジェクトプレハブの準備



まず、オブジェクトをプレハブに変換する必要があります。
オブジェクトを作成し、それをアセットフォルダーにドラッグしてプレハブにします。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-a1A3QEkz2EOYUKkkmWhU6-20240904-102418.png "オブジェクトプレハブの例")



## ステップ 2 : オブジェクトをキャラクターの特定の部分に取り付けるスクリプト



- シーンにZEPETOキャラクター作成コードをデフォルトとして実装します。

:::hint{type="info"}
**📘&#x20;**&#x4EE5;下のガイドを参照してください。 \[[ZEPETOキャラクターを作成](docId\:X3HPJvYg3lwW0PU1r8k1s)]
:::



### ステップ 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で指定されたプレハブをその位置に作成します。



### ステップ 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"}
**📘 Unity HumanBodyBones**
[https://docs.unity3d.com/ScriptReference/HumanBodyBones.html](https://docs.unity3d.com/ScriptReference/HumanBodyBones.html)
:::



以下は、BuildItからのネックピローオブジェクトをキャラクターの首に取り付けて、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 "オブジェクトプレハブ設定の例")



- インスペクターで、ネックピローオブジェクトをプレファブアイテムに割り当て、ボディボーンとしてネックを選択します。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-_Id79tFqG3jX3dvvG1Cjb-20240904-102418.png "スクリプト設定画面の例")

