テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】2D Game Kitでキャラクターの絵を差し替える際のポイント

f:id:tsubaki_t1:20180414220446j:plain

今回はUnityの2Dゲームを割と簡単に作れる 2D Game Kitで、キャラクターの差替を行ってみます。

 

 

2D Game Kit

2D Game Kitは、最近追加された2D用のアセット群です。

2D Game Kit は、メカニクスとツール、システム、アセットをまとめた、コードを一切記述せずにゲームプレイを組み立てられるキットです。

blogs.unity3d.com

2D Game KitではTilemapを使ってステージを作ったり、動くステージを作ったり、イベントで扉を開く、ダメージシステム等、2Dプラットフォーム(横スクロール)ゲームではよくある機能が含まれています

 

チュートリアルは翻訳済み

またチュートリアル(文字)も日本語への翻訳が完了しているので、オリジナルなステージを作って遊ぶ…というレベルでは、割と簡単に実現出来るんじゃないかなと思います。

f:id:tsubaki_t1:20180414221217j:plain

動画もあるので、UI操作は動画、実際の手順は日本語の文章で見比べながら進むとかすると良いかもしれません。内容が一致してないですが、まぁ多分大丈夫です。

 

チュートリアルにはSceneLinkedSMBとかBehaviour Treeの項目もあるので、一見の価値ありです。

Unity - 2D Game Kitチュートリアル

 

キャラクターの差替方法

f:id:tsubaki_t1:20180414223702j:plain

さて便利で楽しい2D Game Kitですが、残念ながらキャラクターの差替方法が公開されていません。また、この更新は普通のAnimationClipを差替云々だけ考えると上手く出来ません。

ポイントは三つです。

  • スプライトの大きさを調整
  • スプライトの中心点を調整
  • アニメーションの上書き

 

前提:必要なアニメーションの一覧

キャラクターを差し替える場合は、当然一致するアニメーションを用意する必要があります。

f:id:tsubaki_t1:20180414224553j:plain
ただ2D Game KitのメインキャラクターであるEllenは結構多才で、色々な事が出来るので、キャラクターを差し替える場合はどうレベルの才能を持った人物が必要になります。

  • 立つ
  • 歩く
  • 走る
  • しゃがむ
  • ジャンプ(上昇)
  • ジャンプ(空中)
  • ジャンプ(下降)
  • 銃を構える
  • 銃を構えながらしゃがむ
  • 銃を構えながら歩く
  • 銃を構えながら走る
  • 銃を構えながらジャンプ(上昇)
  • 銃を構えながらジャンプ(空中)
  • 銃を構えながらジャンプ(下降)
  • 押す
  • 殴る
  • 死ぬ
  • 空中で死ぬ


・・・実に多才ですね。

ポイント1:スプライトの大きさを調整

画像は用意出来ました?
ならスプライトにしてみましょう。

2D Game Kitのキャラクターを差し替える上での注意点は二つです。

  • キャラクターの身長は大体2mくらい
  • Pivotは足元にある


まずスプライトの大きさを大体Ellenと合わせる必要があります。GameObjectのScaleでも何とかなるように思うかもしれませんが、変な挙動になることも有るので、できるだけスプライト側で何とかします。

f:id:tsubaki_t1:20180414225728j:plain

キャラクターの身長が2mというのは、画像解像度に対してのpixels per unitのサイズが関係します。pixels per unitは1mの高さが何ピクセルか…を表します。
例えば解像度が100のスプライトでpixels per unitが100の場合、スプライトは1mになります。また200のスプライトでpixels per unitが100の場合、スプライトは2mになります。

例えばRoboをEllenと同じ大きさにしたい場合を考えた場合、大きさが大体半分なのでPxels per unitを半分にしてやればサイズは丁度よい大きさになります。

f:id:tsubaki_t1:20180414225934j:plain

 

ポイント2:スプライトの中心点を調整

もう一つが、Pivot(スプライトの中心点)の位置です。

大体のスプライトでは、ピボットの位置はBottom(底)もしくはCenter(中心)です。特にCenterが多いんじゃないかなと個人的には思います。調整楽ですし。


さて我らがEllin氏はというと、なんと足元です。しかもBottom等の楽な位置ではなく、足と足の間という、調整必須の位置にあります。

この事を考えずにキャラクターのスプライトをPivotがCenterのモノに差し替えると、キャラクターの下半身が地面に埋まるという面白おかしい絵面が出来上がります。

f:id:tsubaki_t1:20180414230237j:plain

f:id:tsubaki_t1:20180414230525j:plain

これもColliderの位置を差替云々すると、何だかんだ言って面倒なことになるので出来るだけPivotで何とかします。とは言え、これは一括作業がやりにくい項目なので、場合によってはGameObject側を何とかするのもアリかもしれません。

f:id:tsubaki_t1:20180414230842j:plain

 

ポイント3:アニメーションの上書き

アニメーションの上書きです。
UnityのAnimationはAnimationClip単位なので、キャラクターを差し替えようと思ったらアニメーションを差し替える必要があります。

とは言え、AnimationClipを見てみると、中々に大きなシステムを組んでいて、何処に何が有るのか分かりにくいです。

f:id:tsubaki_t1:20180414231340j:plain

のでOverride Animation Controlerで差し替えます。

ここで面倒なポイントは、Dead01 ~ Dead08のように、何やらナンバリングされているアニメーションの存在です。

これは死亡のバラエティがある…のではなく、段階ごとにアニメーションを分割しているという事を意味しています。

f:id:tsubaki_t1:20180414231913j:plain

これはアニメーションの進行を制御したい…みたいな場合によく使う手法で、たいていBlendTreeとの組み合わせで使用する表現の一つです。
例えばDeadの場合、上昇中は仰け反りモーションですが落下が入ると違うアニメーションになる…みたいな感じでしょうか。

f:id:tsubaki_t1:20180414232335g:plain

f:id:tsubaki_t1:20180414232418g:plain

この辺りの進行は正直AnimationClip毎に違うので、中身を見て確認する必要があります。

傾向としては、数字の小さい方が上昇、中央に停滞、下のほうが落下のアニメーションが使われています。

 

関連

このレベルでスプライトを差し替えられたら楽だったんですが…

tsubakit1.hateblo.jp

2D Game Kitの拡張は使えなくなりますが、単純な横スクロールが欲しいなら…

tsubakit1.hateblo.jp2D Game Kitの紹介動画

www.youtube.com