击倒

击倒

用于播放多个实体动画的框架

实用

重要

请使用 0.1.1+ 版本以适配最新版 Hytale (2026.02.17)。

若你使用的是旧版 Hytale,请使用 0.1.0 版本。

你可通过谷歌文档阅读此信息(如更偏好该方式):

https://docs.google.com/document/d/1QEx2OEsehDNb8C7NgbI19sY5svF0M6ZyCRJFSVfUsgM/edit?usp=sharing

关于

Takedown 是一个为创作者设计的插件,用于为实体交互添加自定义动画,例如当怪物生命值仅剩 10% 时播放处决动画,或为两名玩家添加击掌动画。

所有动画均可直接在资源编辑器中配置,无需外部配置文件,也无需学习插件开发。

包含的示例动画:

示例动画

快速入门

该插件包含一个示例动画,可帮助您快速上手。

步骤 1.

打开资源编辑器

  1. 打开聊天框并输入 /op self
  2. 按下 Tab 键
  3. 点击 创造工具 -> 资源 -> 资源编辑器

资源编辑器入口

步骤 2.

创建您的资源包

  1. 点击左上角的 "..." 按钮,并选择 添加包

添加包

  1. 为包命名并选择分组,然后点击 保存

保存包

步骤 3.

添加示例玩家动画

  1. 点击左上角的 "+" 按钮

添加按钮

  1. 将唯一资源 ID 设置为:TD_你的模组名_Player(将 "你的模组名" 替换为你想要的任何名称)

命名动画

关键:唯一资源 ID 必须以 TD_ 开头,并且至少包含两个下划线,否则将无法工作。

  1. 复制以下代码
{
  "AnimationSets": {
    "Death": {
      "Animations": [
        {
          "Animation": "Characters/Animations/Damage/Default/Death.blockyanim"
        },
        {
          "Animation": "Characters/Animations/Damage/Default/Death2.blockyanim"
        }
      ]
    },
    "E1_Spine_Cracker": {
      "Animations": [
        {
          "Animation": "Characters/Origin_Takedown_Spine_Cracker.blockyanim"
        }
      ]
    }
  },
  "Model": "Characters/Player_With_Face.blockymodel",
  "Texture": "Characters/Player_Textures/Player_Greyscale.png",
  "HitBox": {
    "Max": {
      "X": 1,
      "Y": 1,
      "Z": 1
    }
  },
  "Tags": {
    "models": [
      ".*player.*"
    ],
    "E1_Spine_Cracker": [
      "frames=180"
    ]
  },
  "Camera": {
    "PositionOffset": {
      "Z": -20,
      "Y": -3
    }
  }
}
  1. 点击 源码 标签页,并粘贴上述代码

粘贴源码

  1. 点击 创建

步骤 4.

添加示例骷髅动画

重复添加玩家动画的步骤。

对于唯一资源 ID,这次使用 TD_你的模组名_Skeleton

并使用以下代码:

{
  "AnimationSets": {
    "E2_Spine_Cracker": {
      "Animations": [
        {
          "Animation": "Characters/Skeleton-Origin_Takedown_Spine_Cracker.blockyanim"
        }
      ]
    }
  },
  "Model": "NPC/Undead/Skeleton/Models/Model.blockymodel",
  "Texture": "NPC/Undead/Skeleton/Models/Model_Textures/White.png",
  "HitBox": {
    "Max": {
      "X": 1,
      "Y": 1,
      "Z": 1
    }
  },
  "Tags": {
    "models": [
      ".*skeleton.*"
    ],
    "Apply_Death": [
      "health=-100%"
    ],
    "E2_Spine_Cracker": [
      "apply=Apply_Death"
    ]
  }
}

步骤 5.

测试动画

如果一切操作正确,当你击中游戏中的任何骷髅怪物时,将播放此动画:

测试动画

配置动画

哪些怪物可以使用特定动画、播放动画所需的条件、动画结束后会发生什么等设置,均通过资源编辑器进行配置。

命名规则

为了使动画能与插件配合使用,动画名称必须遵循特定规则。

玩家示例:

玩家命名

怪物示例:

怪物命名

模型命名

每个模型的名称必须以 TD_ 开头,并且至少包含两个下划线。这是为了降低多个模组使用相同名称的风险。

动画命名

动画名称必须以 E#_ 开头,才能用于处决动画的开头。

E1E2 分别是实体1和实体2的缩写。

E1 通常用于攻击/执行动作的实体。

E2 通常用于承受伤害/接收动作的实体。

插件通过模型名称和动画名称是否匹配来确定动画的关联性。

从技术上讲,框架支持无限数量的实体,只需递增 E 旁边的数字,例如 E3、E4 等。

对于属于处决动画的一部分但并非开头的动画,可以添加任何前缀,例如 Kill_E1_Spine_CrackerCripple_E1_Spine_Cracker

为多个实体复用动画

要为使用不同模型的实体复用相同的动画,可以配置 models 标签:

models标签配置

当将其设置为 .*player.* 时,意味着这些动画可用于任何使用玩家模型的实体(模型名称中包含 "player" 一词的模型)。

如果你想精确匹配某个模型名称,可以直接使用 Player

你可以在 models 标签中添加多个值来匹配不同的模型。

如果对此进行了更改,建议使用 /td-reset 命令清除插件缓存。

可用实体

要查找可用实体模型的名称,可以使用 生成实体 菜单。

  1. 在创造模式下,按 Tab 键打开物品栏
  2. 点击 世界 -> 生成实体

打开生成实体菜单

  1. 搜索可用的实体

搜索实体

此列表中的名称与模型资源名称一致。

常规动画设置

动画 标签页中,可以找到标准设置,例如使用的文件、速度和循环:

动画设置界面

常规 标签页中,你可以通过一个与动画同名的标签来配置附加设置:

常规设置-标签位置

设置概览

  • frames - 动画的总帧数。这是动画能够播放的必要条件。
  • loops - 动画的循环次数。
  • if - 播放此动画所需的条件。
  • apply - 在动画结束时修改的属性。
  • applyDuring - 在动画持续期间每个游戏刻(tick)修改的属性。
  • next - 在此动画之后播放的动画。如果未包含此设置,当前动画播放完毕后将停止。

对于 framesloops,这两个设置仅对名称中包含 E1 的动画是必需的。

对于 E2 及以上的动画,它将使用与 E1 动画相同的值。

配置示例如下:

标签配置示例

添加条件

要控制动画何时可以播放,可以添加条件。

示例:

条件配置示例

此示例要求实体手持任何剑,并且体力值和生命值均低于 50%。

你可以使用任何你想要的名称来代替 Condition

这允许你为不同的动画重复使用和设置多个条件。

条件设置概览

  • holding - 实体必须持有的物品。 将此项设置为 holding= 表示实体手中不持有任何物品。
  • health / stamina / mana - 实体所需的生命值/体力值/魔法值。 使用 < 表示小于,> 表示大于,% 表示最大值的百分比。
  • attachments - 实体所需的模型附属物。它根据模型附属物的文件名进行检查。

为每个实体添加条件

每个条件(如 health)都是特定于将要播放该动画的实体。 要添加检查两个实体属性的条件,你需要为每个实体分别定义条件。

攻击者示例:

攻击者条件

防御者示例:

防御者条件

在此示例中,将同时使用攻击者和防御者的条件来判断是否可以发起处决动画。

攻击者需要拥有超过 50% 的体力值,而防御者需要拥有少于 30% 的生命值。

添加应用效果 (Apply Effects)

应用效果可用于在处决动画期间或之后改变实体的属性。

你可以像这样添加一个应用效果:

应用效果配置

这将减少该实体 30% 的生命值。

你可以使用任何你想要的名称来代替 Apply_Damage

这允许你为不同的动画配置多个应用效果。

要在每个游戏刻(tick)应用效果,可以使用 applyDuring 标签。请注意,由于它每个游戏刻都会应用(默认为每秒 30 次),你需要相应调整数值。

应用效果设置概览

  • health / stamina / mana - 修改此项属性的具体数值。 你可以省略 % 来使用固定数值。

分支动画

可以使用 next 设置让处决动画包含一系列动画序列中的多个动画。

可以通过以下方式定义不同的可能选项:

分支动画配置

在这种情况下,它会首先检查是否可以播放 Kill_E1_Spine_Cracker,如果条件不满足,则会接着检查是否可以播放下一个动画:Cripple_E1_Spine_Cracker

防御者的条件为:

防御者分支条件

由于 Cripple_E2_Spine_Cracker 没有设置任何条件,如果条件不满足,该动画将始终播放。

如何创建动画

为 Takedown 创建动画时,需要遵循一些特定步骤,所以即使你知道如何在 Blockbench 中制作动画,这些信息仍然很重要。

动画使用 Blockbench 创建。

创建动画时,需要将 吸附 (Snapping) 设置为 60。

安装 Blockbench

你可以从这里获取 Blockbench: https://www.blockbench.net/

你还需要为 Blockbench 安装 Hytale Models 插件: 在 Blockbench 中:文件(File) > 插件(Plugins)。

在哪里找到 Hytale 资源

你可以在游戏安装目录中找到官方的 Hytale 资源文件。

Hytale/install/release/package/game/latest/Assets.zip

如何在同一个 Blockbench 项目中使用两个 .blockymodel 文件

Hytale Models 插件要求所有组 (groups) 都有唯一的名称。

如果你尝试将两个模型导入一个项目,它会重命名冲突的组,同时保留不冲突的组名。

问题在于,Hytale 要求组的名称保持不变,动画才能在游戏中正常工作。

因此,为了解决这个问题,我们需要为其中一个模型添加我们自己的前缀,以便后续可以轻松移除。

添加前缀

要为 .blockymodel 文件添加前缀,我建议使用带有替换功能的文本编辑器,例如 VSCode:

https://code.visualstudio.com/

  1. 在 VSCode 中打开 .blockymodel 文件
  2. 按 Ctrl/Command + F 进行搜索
  3. 展开搜索框以显示替换字段
  4. 在搜索字段中输入:"name": "
  5. 在替换字段中输入:"name": "Mob- (或任何其他有意义的前缀)

搜索替换示例

  1. 点击替换字段旁边的 全部替换(Replace All) 按钮
  2. 如果操作正确,你现在应该看到:

替换后效果

  1. 保存文件

如果你的动画包含两个 .blockymodel 文件,你可以保持另一个 .blockymodel 文件中的名称不变。

将模型放入同一个项目

首先打开其中一个 .blockymodel。

从起始屏幕:点击底部的 打开模型(Open Model)

打开模型

如果已打开一个模型:前往 文件(File) > 打开模型(Open Model)

文件菜单打开模型

然后对第二个模型执行相同操作,这样你就同时打开了两个模型。

在 大纲视图(Outliner) 中,复制组 (group):

复制组

打开第二个模型,并将复制的组粘贴到大纲视图中:

粘贴组

现在你应该在同一个 Blockbench 项目中同时拥有两个模型。

保存 .blockyanim 文件

每个模型需要其自己的 .blockyanim 动画文件。

在继续之前,请确保文件已保存。

编辑(Edit) 标签页的大纲视图中,删除其中一个模型组:

删除模型组

然后在 动画(Animate) 标签页中,选择 动画(Select Animation) > 导出 Blockyanim(Export Blockyanim)

导出动画

重要

请勿撤销操作并保存。

当你撤销时,它只会带回你删除的模型,但不会带回其动画。动画将会完全丢失。

相反,请关闭模型,然后重新打开你之前保存的那个文件。

接着删除另一个模型,并为另一个模型导出 .blockyanim 文件。

现在你应该有两个 .blockyanim 文件,一个用于带有 "Mob-" 前缀(或你使用的前缀)的模型。

从 .blockyanim 文件中移除前缀

与添加前缀的步骤类似,你需要使用带有替换功能的文本编辑器打开 .blockyanim 文件。

打开 .blockyanim 文件,并将 "Mob- 替换为 "

移除前缀

然后保存文件。