(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

UnityでSpineのスキンやアタッチメントを切り替えてキャラクターの見た目を変える方法【Unity】【Spine】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.26f1
spine-unity 3.8


はじめに

今回はSpineで作ったスキンやアタッチメントをUnityで切り替えて、

キャラクターの見た目を変える方法の紹介記事です!

f:id:kan_kikuchi:20210718122007g:plain


なお、SpineをUnityで使えるようにする導入方法については以下の記事を参照の事。



ちなみに記事中では使っている画像やアニメーションは、

上記の記事でも紹介したサンプルを使用しています。


スキンを変える方法

まずキャラクター全体の見た目を設定するスキンを変える方法ですが、

スキンはスケルトンのボーンとアニメーションを他のアタッチメントセットへの再利用を可能にします。これにより同様のボーンとアニメーションを有する複数キャラクター作成作業が大幅に軽減されます。


Skeleton AnimationのInitial Skinから簡単に変える事が出来ます。

f:id:kan_kikuchi:20210718110003j:plain


また、プログラムで変更したい場合はSetSkinとSetSlotsToSetupPoseというメソッドを使います。

//スキンをgoblingirlに変更
_skeletonAnimation.Skeleton.SetSkin("goblingirl");
_skeletonAnimation.Skeleton.SetSlotsToSetupPose();
f:id:kan_kikuchi:20210718111816g:plain


なお、SpineSkinという属性を使う事でスキン名をプルダウンで選べるようになります。

ただし、SkeletonAnimationと同じオブジェクトにAddしている必要があります。

//Inspector上でスキン名をプルダウンで選ぶ変数
[SerializeField, SpineSkin]
private string _skinName = default;
f:id:kan_kikuchi:20210718123302j:plain



アタッチメント

次にキャラクターの持ち物など一部分だけを設定するアタッチメントを変える方法ですが、

Spineのアタッチメントはスロットを通してボーンにアタッチします。ボーンがトランスフォームされる時、アタッチメントもトランスフォームされます。アタッチメントの中にはイメージのように表示されるものもあれば、境界ボックスのように概念のものもあります。


以下のようにプログラムからSetAttachmentを使って変更します。

//left-hand-itemというスロットに付いているアタッチメントをspearにする
_skeletonAnimation.Skeleton.SetAttachment("left-hand-item", "spear");

//アタッチメントにnullを設定するとなくす事も可能
_skeletonAnimation.Skeleton.SetAttachment("left-hand-item", null);
f:id:kan_kikuchi:20210718120657g:plain


ちなみにどんなスロットやアタッチメントが設定されているかは、

スケルトンデータから確認する事が可能です。

f:id:kan_kikuchi:20210718113600j:plain