【Hytale plugin 制作】武器のモーション割り当てしてみる。#3

前回、自身で新規アイテムを追加してみましたが、現状なんの意味も持たず機能もありません。

今回から数回にわたり、このアイテムに効果とか武器として認識させるなど機能を追加していこうと思います。今回はとりあえず武器として振れるようにしてみようと思います。

設定前のデフォルトモーション

※本記事はアーリーアクセス版(2026/04時点)の情報に基づいています。開発環境の仕様は今後変わる可能性があるため、公式の更新も併せてチェックしてくださいね。

参考: ゲーム本体に入っているAssets.zip

User/Appdata/Roaming/Hytale などダウンロードしたゲーム本体のフォルダを開き、中を探すとAsset.zipというファイルがあります。これはバニラ環境のアイテムデータなどが入っているアセットファイルになります。

jsonの記入の方法などはこの中にある既存アイテムの記述をもとに作っていこうと思います。

Assets.zipを解凍して入手したサンプルたち

Assets.zipを展開し、Serverの中身を見てみた

いろいろ入っていて、ゲーム内の設定が、ファイル駆動式できれいに整頓されていることがここからも見て取れますね。

今回作っている、武器などの挙動を決める.jsonファイルは、Item/Itemsのフォルダの中にあります。

# バニラアイテムの剣などの設定ファイルの場所
Item/Items/Tools
├─Capture_Crate
├─Feedbag
├─Hammer
├─Hatchet
├─Hoe
├─Pickaxe
├─Prototype
├─Repair_Kit
├─Shears
├─Shovel
├─Sickle
| ├─ Tool_Sickle_Copper.json
| ├─ Tool_Sickle_Crude.json
| ├─ Tool_Sickle_Iron.json
| └─ Tool_Sickle_Steel_Rusty.json
└─Watering_Can

参考として、Crude.jsonの中身を見てみましょう。(全文載せるのは長いのと、プラグイン開発などの文脈では許容されやすいですが、あまり有料ゲームの設定ファイルを公開するのもあれなので、一部だけ抜粋して紹介します。自身の環境で全文確認してください

鎌の設定json Tool_Sickle_Crude.json 一部抜粋

# Tool_Sickle_Crude.json 一部抜粋
{
  "Categories": [
    "Items.Tools"
  ],
  "PlayerAnimationsId": "Sickle",

  # 前回紹介したモデルデータなど
  "Model": "Items/Tools/Sickle/Crude.blockymodel",
  "Texture": "Items/Tools/Sickle/Crude_Texture.png",
  "Icon": "Icons/ItemsGenerated/Tool_Sickle_Crude.png",
  "Recipe":~~ <- アイテム制作の方法などの記述
  "Interactions": {
    "Primary": "Sickle_Attack" <- プレイヤーアニメーションの定義
  },
  "InteractionVars": {
    "Swing_Effect": {
      "Interactions": [
        {
          "Parent": "Sword_Swing_Effect",
          "WorldSoundEventId": "SFX_Sword_T2_Swing"
        }
      ]
    },
    "Impact_Damage": {
      "Interactions": [
        {
          "Parent": "Sword_Impact_Damage",
          "DamageEffects": {
            "WorldSoundEventId": "SFX_Sword_T2_Impact"
          }
        }
      ]
    }
  },
  "MaxDurability": 250, <- 耐久値
  "MaxStack": 1 <- スタック可能最大数
}

参考ファイルをもとに、自身のアイテムのJSONを編集

設定ファイルを見ると、アニメーション周りは、”Interactions”: と”InteractionVars”:の設定であることが分かったので、コピペし自身のアイテムに設定してみます。

{
  "Id": "Fire_Sword_Prototype",
  "Name": "Fire Sword",
  "Categories": [
    "Items.Tools"
  ],
  "PlayerAnimationsId": "Sickle",
  "Model": "Items/Tools/Fire_Sword_Prototype.blockymodel",
  "Texture": "Items/Tools/textures/Fire_Sword_Prototype.png",
  "Quality": "Rare",
  "Interactions": {
    "Primary": "Sickle_Attack"
  },
  "InteractionVars": {
    "Swing_Effect": {
      "Interactions": [
        {
          "Parent": "Sword_Swing_Effect",
          "WorldSoundEventId": "SFX_Sword_T2_Swing"
        }
      ]
    },
    "Impact_Damage": {
      "Interactions": [
        {
          "Parent": "Sword_Impact_Damage",
          "DamageEffects": {
            "WorldSoundEventId": "SFX_Sword_T2_Impact"
          }
        }
      ]
    }
  },
  "MaxDurability": 250,
  "MaxStack": 1
}

firesorwd(新規追加アイテム)の設定ファイル

設定内容概要

“Interactions” :モーションの設定

“Swing_Effect” :振ったときのエフェクト(残像)

“Impact_Damage”: エンティティとぶつかったときの衝撃アニメーション

設定を反映させてみる

設定し、サーバ起動。接続すると、Sickle(鎌)っぽく振れるようになりました。

モーション割り当てに成功

サーバ接続の方法など(復習): 【Hytale plgin制作】開発環境の準備 githubから入手#1

モーション割り当てに成功

上のgif動画のように、アニメーション及び、剣を振るというアクションの実装ができました。モーションデータなどを自作すれば、自由自在に武器を作れるようになります。動画を見ればわかるように当たり判定やモーションは動いていますがダメージ設定などは未割当なので 0ダメージ(ダメージ無)になっています。

ここまでで、出来たこと

ここまでで、出来てないこと

  • 武器のダメージ設定
  • 制作するためのレシピ設定
  • スキルの実装
  • 長押しスキル(チャージなど)の実装

最後に

 今回は、もともとある武器モーションを割り当てて剣として振れるようにしてみました。当たり判定などは、勝手に動いてくれるので、エフェクトを乗せるとかを実装していくとアイテムの幅が広がって楽しそうです。

今回は、パラメータが少なくわかりやすかった鎌のデータ(Tool_Sickle_Crude.json)を参考に使ってみましたが、次回は剣の武器効果とかを参考にちゃんとした剣としてふるまうように、設定ファイルを編集していこうと思います。

第4回 ダメージや音を設定してみる:(記事は現在利用できません: ID 6328)

指定された記事(ID: 6328)は現在公開されていません。

ここまで読んでいただきありがとうございます。

では、次の記事で。 lumenHero

関連記事

第0回 Hytale plugin用の環境構築 : Hytale plugin用の環境構築【VSCode ,Java ,BlockBench】

第1回 自作プラグイン環境を作る : 【Hytale plgin制作】開発環境の準備 githubから入手#1

第2回 モデルを読み込ませてみる: 【Hytale plugin 制作】配布モデルを自分のpluginとして読み込んでみる。#2

第2回おまけ 名前空間などで小一時間溶かした話 :Hytaleプラグイン開発:アイテム定義JSONで”tkm:Items”と書いて1時間溶かした供養メモ。【Hytale plgin制作】