ZEPETOキャラクターの色と着用アイテムの色の変更
このガイドは、魅力的なコンテンツを作成する手助けを目的としています。
ZEPETOキャラクターは、実行時にZepetoCharacterオブジェクトとしてインスタンス化されます。
ZepetoCharacterの構造を調べると、Zepeto Contextというサブオブジェクトが見つかります。Zepeto Contextの中には、bodyという別のオブジェクトがあります。
スクリプトを使用して実行時にbodyオブジェクトのbody(Clone)マテリアルを置き換えることで、ZEPETOキャラクターの色を変更できます。
アニメーションされていないアバターの場合、このアプローチは顔全体と体の色を変更します。
ただし、アニメーションされたアバターの場合、bodyオブジェクトの子であるANIME_BASEMODELのbody(Clone)マテリアルも変更する必要があります。
マテリアルの置き換えは、同じ長さのマテリアル配列で可能であることに注意してください。
以下は、ローカルプレイヤーのボディカラーを変更するサンプルコードです。
キャラクターがロードされた後にのみキャラクターの色が変更されるようにロジックを実装してください。
- ボディ素材を変更すると、ZEPETOアバターのメイクアップが正しく表示されない可能性があります。
使用済みアイテムは、ボディオブジェクトの下にサブオブジェクトとしてインスタンス化されます。
アイテムオブジェクトのマテリアルセクションから、各アイテムに適用されたマテリアルを確認できます。
スクリプトを使用してランタイムでマテリアルを置き換えることで、アイテムの色を変更できます。
以下は、ローカルプレイヤーが装備している最初のアイテムの色を変更するサンプルコードです。
キャラクターがロードされた後にのみアイテムの色が変更されることを確認してください。
- コードの説明
- this.body.transform.GetChild(0) は、装備されているアイテムの中で最初のアイテム、すなわちインデックス0のアイテムを指します。
- 他の装備アイテムの色を変更するためにこれを適応できます。
- 複数のマテリアルを使用しているアイテムの場合、マテリアルの置き換えには同じ長さのマテリアル配列が必要であることを忘れないでください。
これまで得た洞察を活用することで、キャラクターとすべてのアイテムの色を一様に変更できます。
"色を変更"ボタンがクリックされたときにローカルプレイヤーのキャラクターとアイテムの色を完全に変更し、"元の色"ボタンがクリックされたときに元に戻るサンプルコードです:
- この方法はローカルプレイヤーだけでなく、実行時に作成されたすべてのZEPETOキャラクター、NPCキャラクターを含むにも適用できます。
- 自由に創造的になり、楽しい方法で適用してください!