見出し画像

Godotで、Skeleton2Dで動きをつける方法

こんにちは、軽井さんです。Godotでゲームを作っています。

Skeleton2DとBone2Dを使ったボーンの入れ方と、リギング、アニメーションについて備忘録もかねて書こうと思います。


Skeleton2Dを使った例

ボーンを使ったキャラクターを用意するのは設定が手間ですが、一度設定してしまえばアニメーションを楽に作れます(しかも修正しやすい!)

☝️Skeleton2Dを使用したアニメーション

1. 画像の準備

まずは動かすための画像が必要です!
用意の仕方が2種類ありますので見ていきましょう。

1. パーツごとに分けた複数枚の画像を用意する方法

☝️キャラクターの全体図
☝️パーツごとに分割して画像を書き出す

画像のようにキャラクターを部位ごとに分割して書き出す方法です。

書き出す時にややめんどくさいのが難点ですが、もっとめんどくさい作業を飛ばせるので特に理由がなければこちらをおすすめします。
Illustratorなどでイラストを制作していれば一括で書き出せます。

また、ファイルごとに名前をつけておくと後で見やすいのでおすすめです!

2. 一枚の画像にまとめる方法

☝️画像を分割して一枚で書き出す

一枚のファイルの中で部位を分けて書き出す方法です。

クリップスタジオなどのペイントソフトでイラストを描いている場合、こちらの方が書き出しやすいかもしれません。
(Photoshopを使っている方であれば、ファイル>自動処理>バッチなどの処理を使えばレイヤーごとに分割して書き出すことが可能なので、1の方法でやる方が楽だと思います!)

また、画像ファイルの数が増えるのがいやな方はこちらの方がファイル構造などがすっきりしていいでしょう!

以降は1の方法を中心に進めていきます。

2. ノードの準備

画像が用意できたらGodot側でノードの準備をしましょう。

☝️一旦ぐちゃぐちゃでも気にしない

画像の左上のシーン内にSkeleton2Dを追加し、その子ノードにSprite2Dを分割したパーツの数だけ用意します。
できたら左下のファイルシステムから、Sprite2Dノードにドラッグ&ドロップで画像を読み込みましょう。
ひとつひとつ読み込ませるのがやや面倒ですが、頑張ってください!

ここでノードの名前も変更しておきましょう。

3. Bone2Dの追加

☝️Sprite2Dを全選択してShift + Command + B

Sprite2Dノードを全選択します。
その状態で、画像の中央上あたりにあるツールバーからホネのアイコンをクリックして、「ノードからBone2Dノードを作成」をクリックします。(ショートカットShift + Command + BでもOK)

☝️Bone2Dができた!

そうすると画像のようにそれぞれのパーツに対応したBone2Dノードが作成されます。

4. Sprite2Dを移動・Polygon2Dに変換

☝️Node2Dを追加。名前をSpritesなどにしておくとわかりやすい

Bone2Dができたら、Node2Dなどを追加してその子ノードにSprite2Dを移動させましょう。

移動させたら、このタイミングでSprite2DをPolygon2Dに変換してしまいましょう!

☝️右上あたりにSprite2Dと表示される

Sprite2Dノードを選択すると、画像右上あたりにSprite2Dと表示されるので、Polygon2Dに変換するを選択してひとつずつ変換していきましょう。

☝️Polygon2Dを作成を選択

また、この時点で画像をマウスで並べておくとスムーズです!

☝️2Dエディタ上で画像を並べておく

5. Bone2Dノードを組み立てる

☝️構造を考えて親子関係を決める
先端にBone2Dを追加するのを忘れずに!

ボーンを体の構造を考えて並び替えます。

このキャラクターの場合、尻尾のようなところから胴体が生えていて、胴体から頭・左腕・右腕が生えている…

under
  └── torso
         ├── head
         │     └── eyes
         │           └── Bone2D
         ├── arm_L
         │     └── hand_L
         │           └── Bone2D
         └── arm_R
               └── hand_R
                     └── Bone2D

このような構造になっています!

このときeyes・hand_L・hand_Rのような先端になるノードの子に、新しくBone2Dノードを追加しておいてください!

それができたら、2Dエディター上でボーンをキャラクターの形に並べていきます。

☝️並べた後のボーン

原点に全てのボーンが配置されているので、ドラッグしてキャラクターの体に合うように並べましょう。

手や頭の先にあるボーンを動かすときは、先ほど追加したBone2Dを引っ張って動かすようにしましょう。このBone2Dはこれを動かすためのものなので、右を向いていても大丈夫です。
(※重要: この際、Transformなどで向きや大きさを変えてしまうとエラーの原因になります!)

☝️右上にあるSkeleton2Dから選択

体にボーンが合わせられたら、Skeleton2Dノードを選択して、画像右上にあるツールバーからレストポーズを上書きをクリックしましょう。

これでノードについていたエラーが解消されるはずです!

6. ウェイトペイントで連動させる

画像とボーンの準備ができましたが、このままだとボーンを動かしても画像がついてきません。
これを解消するためにウェイトペイントという設定をしましょう。

☝️Polygon2Dノードを選択して、インスペクターからSkeletonの割り当てを選択。

左上のシーンからPolygon2Dノードを選択して、右のインスペクターを開きます。

そうするとSkeletonという項目があるので、その中にある割り当てというところをクリック。

ノードを選択とでたらSkeleton2Dノードを選択しましょう。

☝️右上にあるUVをクリック

できたら、先ほどのPolygon2Dノードを選択したまま、画像右上のUVをクリックします。

☝️この画面でウェイトペイントができる

ウインドウが開いたら、画像左上のボーンを選択してから
右上に出てくるボーンをポリゴンに同期させるを選択します。

そうすると、Bone2Dノードの一覧が出てくるので、対応したノードを選択します。

☝️白はボーンに追従、黒は追従しない

対応したノードを選択した状態で、真ん中に表示されている画像を見ると、四角い点のようなものが表示されています。

この点が白い状態だと、ボーンを動かした時に画像が一緒に動きます。反対に黒い状態だと、ボーンを動かしても画像は動きません!

今回は追従して欲しいので、全ての点を白く塗ってしまいましょう。
マウスやペンタブでクリックしながらなぞると色がつくはずです。

☝️動いた

まとめ

ややこしい部分もありましたが、順番に進めれば動くようになると思います!

あとはAnimationPlayerノードを追加すると簡単にアニメーションがつけられるので、いろいろ試してみてください!

あなたのゲーム制作がうまくいくことを願っています!

いいなと思ったら応援しよう!

軽井さん
よろしければ応援お願いします! いただいたチップはゲーム制作やクリエイターとしての活動費に使わせていただきます!