アドオン作成 - アニメーション
目次は右上の「≡」から!
機能
エンティティの体の動きをアニメーションと呼び、このJSONはそのアニメーションを設定します。
ファイルの場所
リソースパックのanimationsフォルダにファイルを置きます。
リソース
┣ manifest.json
┣ pack_icon.png
┗ animations
┗〇〇.json
┣ manifest.json
┣ pack_icon.png
┗ animations
┗〇〇.json
基本の構造
{
"format_version": "1.8.0",
"animations": {
~#r"~#M(83ffd9)animation.my_entity.moveM#~": {
%%%% "loop": true,
%%%% "bones": {
%%%% ~#b"body": {
%%%%%%%% "position": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "rotation": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "scale": [ 1.0, 1.0, 1.0 ]
%%%%%%%%}b#~
%%%% }
%%%%}r#~
}
}
● アニメーションのID
アニメーションのIDは"identifier": "〇〇"のように指定するのではなく、 上の例でマーカされてる部分にプロパティとして記します。
推奨フォーマットは「animation.(エンティティ名).(アニメーション名)」です。
● loop
アニメーションが再生されたとき、再生が止まるまでループするかどうかを指定します。
● bones
このアニメーションが紐づいているエンティティのモデルのボーン1つに対してアニメーションを指定します。
上の例で"body"とあるところはアニメーションを設定したいボーンの名前で、 青枠の部分1つで1つのボーンについて記述します。
● position, rotation, scale
そのボーンの位置、回転、スケールを指定します。数(小数)で指定すると、その状態で固定になります。 時間とともに"動く"ようにしたいなら、q.life_timeなどを使ったMolang式で指定します。
具体的な書き方
● 指定するボーンを増やす
{
"format_version": "1.8.0",
"animations": {
~#r"animation.my_entity.move": {
%%%% "loop": true,
%%%% "bones": {
%%%% ~#b"~#M(83ffd9)bodyM#~": {
%%%%%%%% "position": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "rotation": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "scale": [ 1.0, 1.0, 1.0 ]
%%%%%%%%},b#~
%%%% ~#b"~#M(83ffd9)headM#~": {
%%%%%%%% "position": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "rotation": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "scale": [ 1.0, 1.0, 1.0 ]
%%%%%%%%}b#~
%%%% }
%%%%}r#~
}
}
このように青枠部分を増やします。上記の例でマーカされてる部分はボーン名です。
● 1つのファイルに複数のアニメーションを定義できる
{
"format_version": "1.8.0",
"animations": {
~#r"animation.my_entity.move": {
%%%% "loop": true,
%%%% "bones": {
%%%% ~#b"body": {
%%%%%%%% "position": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "rotation": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "scale": [ 1.0, 1.0, 1.0 ]
%%%%%%%%}b#~
%%%% }
%%%%},r#~
~#r"animation.my_entity.jump": {
%%%% "loop": true,
%%%% "bones": {
%%%% ~#b"body": {
%%%%%%%% "position": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "rotation": [ 0.0, 0.0, 0.0 ],
%%%%%%%% "scale": [ 1.0, 1.0, 1.0 ]
%%%%%%%%}b#~
%%%% }
%%%%}r#~
}
}
このように赤枠部分を増やして1つのファイルで複数のアニメーションを定義することができます。
Blockbenchを使って作成
難しいアニメーションを設定するとき、完成図を見ずにJSONとにらめっこするだけではかなりキビシイときがあります。
そういうときには便利なツール「
エンティティのモデリングついでに作成するのがオススメです。
使い方はまたいつか書きます。