前回のモデリングの記事から大分時間が空いてしまいましたが、続きを書いていきたいと思います。
前回はBlockbenchで作成したモデリングデータをマイクラに導入し、オリジナルMobをスポーンさせるまでの流れをご紹介しました。
今回はその続きとして、「Mobに動きや体力などのビヘイビアを追加する」や「アニメーションの設定」に着手しています。
「マイクラ」「アドオン制作」「Blockbench」「オリジナルMob」「ビヘイビア」「アニメーション」といったキーワードに興味がある方は、ぜひ最後までご覧ください!
- オリジナルMobにビヘイビア(行動パターン)を追加する
- BlockbenchでMobにアニメーションを設定する手順
- Mobにアニメーションを設定する
オリジナルMobに体力や移動を設定する
マイクラのオリジナルMobに体力や移動の特徴を与えるには、ビヘイビアファイル(.behavior.json)に正しく設定を追加する必要があります。
ここでは、オリジナルMobのサカバンバスピス…水棲生物Mobが水中で自然に泳いだり、特定の体力値を持つようにする設定を追加していきます。
ビヘイビアパックの構成を見直そう
まずは、ビヘイビアパックの中にある「entities」フォルダに格納されている、○○.behavior.jsonファイルを確認しましょう。
このファイルはMobの行動、AI、属性を定義する重要な部分です。赤枠で囲った部分が今回新しく追加した部分んです。
参考にしたデータはタラやサーモン。
この内容で、水中Mobとしての基本的な行動やステータスの設定になっていると思います。
水中をゆらゆら自由に泳ぎ回るMobになりました。
●水中でのランダム遊泳、遊泳速度:minecraft:behavior.radom_swimの内容
●水中呼吸可、陸上呼吸不可:minecraft:breathableの内容
●コリジョン設定で障害物にぶつかるように:minecraft:collision_boxの内容
●体力の設定:minecraft:healthの内容
…他にも設定している項目がありますが、どういう仕様があるのかは詳しくは分かっていません。(ゴメンナサイ)
これらの記述を書いておくと、今回想定していたモブの挙動に最も近い形になったので、この内容になっています。
繁殖や子供、攻撃を受けた際の逃走などはまだ設定していません。
一つ一つの細かい設定などは正直違いがよく分かっていないものが数多く!
なので、タラ(cod)のデータをコピーして、不要なものを一つずつ試行しながら消していきました。
Blockbenchでアニメーションを追加する手順
モブに生命感を与えるにはアニメーションの設定が欠かせません。
Blockbenchにはアニメーション編集モードが搭載されており、歩く・泳ぐ・空を飛ぶ、待機するなどの動作を細かく設定できます。
アニメーションの基本操作から、マイクラで使える形式への書き出し方法までを順を追って解説します。
アニメーションモードの使い方と基本の流れ
まずはBlockbenchの上部メニューから「Animate」タブをクリックしてアニメーションモードに切り替えましょう。
左上の「+」ボタンから新しいアニメーションを作成し、名前をつけます(例:walk、swim、idle など)。
アニメーションの種類には以下の2つがあります
- ループ:常に繰り返す(歩く、泳ぐなど)
- 1回のみ:特定のアクション時のみ(攻撃、死亡など)
- 最後のフレームを保持:最後のポーズをアニメーションが終わるまで保持(最初は羽ばたきから滑翔の姿勢を維持など)
次にタイムライン上にキーフレームを追加して、各部位の動きを設定します。
モブの足や腕に動きをつける場合は、右メニューバーの「OUTLINER」から該当のパーツを選び、TIMELINEの「ローテーション」や「ポジション」や「スケール」の右側にある「+」マークをクリックし、キーフレームを設置。
キーフレームを選択して、動きを設定していきます。
タイムライン右に行くほど秒数が進んでいきますので、任意の秒数目でキーフレームを設置し、アニメーションを作っていく事になります。
部位ではなく、モデル全体を動かしたい場合には、右側のメニューからboneをクリックします。
そうするとモデル全体が選択されます。
関節とピボットの設定と回転でリアルな動きを作る
モブに自然な動きを付けるにはピボット(回転の軸)の調整が必要です。
例えばこのモデリングのヒレを左右に動かす場合。
ピボットをヒレの付け根に設定し、ローテーションで左右に向きを傾けると、ヒレの付け根を起点にしてヒレが動く…よりリアルに「泳ぐ」動作になります。
ピボットの調整は、各エレメントの「Pivot 」で行います。
画像では回転ツールの右隣の「⦿」このマークですね。
XYZの位置を細かく調整します。
おすすめは、まずデフォルトの位置で動かし、違和感がある場合に微調整する方法です。
アニメーションファイルのエクスポートとjson設定
アニメーションが完成したら、次はマイクラ用にjsonファイルに書き出します。
「ファイル > 書き出し > Bedrock Animation」を選びます。
こちらがanimation.jsonの内容。
アニメーションさせる各パーツの名前は、modelsフォルダ内に格納してあるgeo.json内(Mobのモデル)に記述してあるパーツの名前と一致している必要があります。
ここが違うとアニメーションが動作しないので気を付けてください。
筆者はここを一か所間違えていて、延々と悩んでおりました!(笑)
各部位の数値(0.0:[0,5,0]などの部分)にmath.cosなどを使うと移動距離や移動速度に応じて動きを制御する事が出来るようになりますが、筆者はアドオン制作素人ですので、まだ触れません。まずは基礎的な所から入っていきます。
出力されたファイルは以下のフォルダに入れます。
リソースパックフォルダ
→ animationsフォルダ
さらに、entity.jsonファイル内でアニメーションを呼び出す設定を行います。
animations:{}の中の”swim:”で設定する名前はanimation.jsonに記述しているanimations:{}内の名前と一致させます。
本当はMobが動いているときはswimアニメーション、止まっているときは静止という動きにしたいところですが、今回はまず正常に泳ぐアニメーションが反映される様にするところからです。
query条件で「泳いでいる時は」という内容に挑戦もしましたが、うまくいかなかったので…追々です!
動きの状態に合わせてアニメーションを切り替えるならアニメーションコントローラーの設定が必要になりますが、今回はまだ触れません。
アドオンのテストとよくある不具合の対処法
アニメーションやビヘイビアの設定が完了したら、実際にマイクラ内でMobをスポーンさせて、正しく動作するかをテストします。
しかし、筆者含め初心者にありがちなのが「アニメーションが動かない」「Mobが出現しない」などの不具合です。
ここでは、筆者が制作中によく直面したトラブルとその対処法を記録に残しておきます。
読み込みエラー・アニメーションが動かない
アニメーションが再生されない場合、以下の要素が主原因でした。
- animation.json ファイル名のスペルミス
- entity.json 内の animation 名と一致していない
- animation.json内とgeo.json内に記述しているモデルのパーツ名が一致していない
- scripts セクションの query の条件が常に false になっている
- scripts内のanimateを別の場所に記述している
- {}、[]、()など、括弧の位置や括弧の数が合っていない(モデルのグラフィックやスポーンエッグが表示されないバグは大体コレが多いです!)
- 「:」 「,」 「.」 「”」などが抜けている、位置が間違っている
- アニメーションファイルの配置場所が誤っている(例:animations フォルダに入れていない)
まずは entity.json の “animations” と “scripts” のキーと、エクスポートした animation ファイルの内容が一致しているかを確認!
次に{} [] ()の位置やペアの数が合っているか、「:」 「,」 「.」 「”」が合っているか確認!(大体の原因がここでした!)
制作中の経験だと小さなミスによるバグが多かったので、構文ミスを疑う前にスペルミスや括弧のミスを疑った方が解決が早いかもしれません。
また、マイクラ内でワールドを作成する際に、必ずリソースパックとビヘイビアパックの両方を有効化しているかもチェックポイントです。
Mob自体が動かない
モブが動かず硬直したままになる場合は、以下の設定を確認。
- 「minecraft:movement」や「minecraft:behavior.○○」の設定漏れ
- AIが設定されていないために行動しない
アニメーションを設定したつもりでも、AI(ビヘイビア)が一切追加されていないケース!
この場合、モブは「ただの置物」になってしまいます。
今回の筆者のMobの例だとminecraft:movement、minecraft:behavior.random_swimが該当します。
“minecraft:movement”: {“value”: 1.0},
”minecraft:behavior.random_swim”: {”speed_multiplier”: 0.5,”priority”: 3,”xz_dist”: 16,”y_dist”: 4,”interval”: 0}
マイクラアドオン制作におけるビヘイビアとアニメーションのまとめ
今回は、Blockbenchで作成したオリジナルMobに対して、ビヘイビア(行動パターン)とアニメーションを追加する手順に挑戦しました。
次回はMobの状態に合わせてアニメーションを切り替える事に挑戦してみたいです!
