この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
CustomModelDataで追加したテクスチャを動かしたいマインクラフター
「CustomModelDataにアニメーションをつけるにはどうすればいいのかな? 具体的にやり方を教えて欲しいな」
こんな疑問を解決します!
- CustomModelDataでアニメーションを作成する
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
マイクラ歴は5年程で、最近は脱出マップやミニゲームを制作しています!
→ダウンロードページ
この記事では、CustomModelDataをアニメーションさせる方法について解説していきます。
アイテムの見た目を変更することのできるCustomModelDataですが、時間経過で画像が変化させることも可能です。
必要なファイルやその内容について説明しているので、ぜひ参考にしてくださいね。
それでは、さっそく見ていきましょう。
今回解説するリソースパックのサンプルはGitHubからダウンロードすることができます。
ぜひ活用してみてください。
CustomModelDataでアニメーションを作成する
CustomModelDataを用いてアイテムのテクスチャを変更する際に、アニメーションを追加することが可能です。
しかし、ただアニメーション用の画像を追加するだけで済むわけではないので、以下の作業が必要となります。
- アニメーションさせるのに適した画像ファイルを用意する
- アニメーションさせる画像だとjsonファイルで認識させる
CustomModelDataについては以下の記事を参考にしてください。
以下の記事の内容を理解している前提で、本記事は話を進めていきます。
アニメーションさせるのに適した画像ファイルを用意する
まずはアニメーション用のテクスチャだと認識させるために、縦長の画像を用意しましょう。
アニメーションさせる際は複数の画像ファイルを用意するのではなく、正方形の画像を縦に連ねます。
アニメーションされる順番は、基本的に上から下に向かいます。
なので上記の画像には0、1、2と番号を振りましたが、特別な指示をしない限りその通りに表示されます。
画像の準備はこれだけでOKです。
アニメーションさせる画像だとjsonファイルで認識させる
アニメーション用の画像を用意することができたら、次はアニメーションさせる画像だとjsonファイルを使って認識させます。
このjsonファイルは画像ファイルと同じフォルダに入れる必要があります。
別の場所にフォルダを作成するなどといった手間はないので、簡単ですね。
また、jsonファイルの名前は必ず「拡張子を含めた画像のファイル名.mcmeta」となるようにしましょう。
例えば「sample-animation.png」をアニメーションさせたかったら「sample-animation.png.mcmeta」となります。
.mcmetaの名前によって、どの画像をアニメーションさせるのかを指示していると思えばOKです。
jsonファイルの中身は、以下のようになります。
{
"animation": {
"interpolate": true,
"width": 32,
"height": 32,
"frametime": 40,
"frames": [
{
"index": 0,
"time": 50
},
0, 1, 2, 1, 0, 1, 2, 1, 0, 1
]
}
}
各項目について説明していきます。
項目名 | 説明 |
---|---|
interpolate | アニメーションさせる際に、ゆっくりと変化させるかどうか。 フェードアウト、フェードアウトをかけたい場合にtrueで、パッと切り替えたい場合はfalseにする。 デフォルトはfalseになっています。 |
width | アニメーションさせる画像の横幅を指定する。 必ず用意した画像の倍数となる数字を入力すること。 また、画像よりも大きい横幅を指定すると読み込み不可となる。 |
height | widthの縦版。 なので、縦の大きさの倍となる値を入れること。 (横16×縦48の画像を用意している場合に、widthとheightの両方に16を指定すると3つ分の画像がアニメーションされることになる) |
frametime | どれくらいのスピードで画像を切り替えるか。 単位はtickなので、20で1秒。デフォルトでは1に設定されているのでかなり早め。 |
frames | framesで切り替える画像の順番を指定をすることが可能。 上記の例では「0, 1, 2, 1, 0, 1, 2, 1, 0, 1」とあるので、これの通りに画像が変化する。 (0から順番に数える点に注意) indexは詳細が不明でしたが、0を指定すれば問題ありません。 timeはframetimeと同様に画像を切り替える速度を指定するもので、こちらで指定した値が優先されます。 |
余談ですが、widthを用意した画像ファイルよりも小さくした場合は、上から下ではなく左上から右に進んでいき、画像が途切れるところで下の段へ移動するようにアニメーションされます。
(アニメーションの順番の指定をする場合も、同様の数え方になる)
ややこしくなるので、基本は縦長の画像を用意して、widthは画像のサイズと同じ値を指定するようにしましょう。
また、以下のように入力しても動作はします。
{
"animation": {}
}
ただし、すべての項目がデフォルト設定になっていますので、まず使いにくいです。
面倒ではありますが、各項目キチンと設定した方が良いですね。
jsonファイルを作成した後は、実際にCustomModelDataを指定したアイテムを取り出してアニメーションするかを確かめましょう。
まとめ
というわけで、今回のまとめです。
この記事は以上になります。