手部条件动画
约 1833 字大约 6 分钟
2025-01-28
条件动画是一系列特殊命名的动画,只会在满足特定条件时才会播放。通过这种写法可以在不需要了解动画控制器情况下,也能快速做出想要的内容。
手部条件动画
由于手部动画较多,我们专门把手部的条件动画独立成一个单独的文件。
默认模型的手部条件动画全部放置于 arm.animation.json
文件中,会在玩家手持对应物品,进行相关操作时播放。
它的优先级高于主动画,会覆盖主动画相关的组而进行播放,所以你不应该在手部动画中添加其他与手部无关的组的动画。
当没有如下的手部动画时,游戏会调用默认的 use_mainhand
use_offhand
swing_hand
等动画。
原版知识补充
这里先补充几个 Minecraft 原版知识:
- 主手:英文为 mainhand,在游戏内默认为右手;
- 副手:英文为 offhand,在游戏内默认为左手;
- 使用:英文为 use,部分物品在玩家手持时,按下右键能够使用。比如食物、药水、弓箭、盾牌等。只要是能够使用的物品,无论在左手还是右手、均可以鼠标右键触发使用;
- 挥动:英文为 swing,玩家鼠标左键点击即会触发挥动。玩家大部分情况下只能挥动主手。
- 持有:英文为 hold,玩家主手或副手持有任何物品,且不进行任何操作时,即为持有状态。
- 标签:对于同一类(比如所有的剑)物品,原版提供了标签(tag)系统,这一块需要通过 wiki 查询。
- 物品 ID:在游戏内按下
F3 H
快捷键就能打开物品 ID 显示,如下图所示。原版每种物品都有自己的 ID;
使用动画
使用动画默认自带了 10 个内部分类动画,这些动画一般情况下能兼容其他模组:
名称 | 作用 |
---|---|
use_mainhand:eat 、use_offhand:eat | 食用食物时播放,约 1.5 秒 |
use_mainhand:drink 、use_offhand:drink | 饮用药水、牛奶桶等时播放,约 1.5 秒 |
use_mainhand:shield 、use_mainhand:shield | 玩家使用盾牌时播放 |
use_mainhand:block 、use_offhand:block | 玩家处于防御状态(比如使用盾牌)时播放 |
use_mainhand:bow 、use_offhand:bow | 使用弓箭时播放,建议 60 秒以上时长或静态动画 |
use_mainhand:spear 、use_offhand:spear | 使用三叉戟时播放,建议 60 秒以上时长或静态动画 |
use_mainhand:crossbow 、use_offhand:crossbow | 使用十字弓时播放,建议 60 秒以上时长或静态动画 |
use_mainhand:spyglass 、use_offhand:spyglass | 使用望远镜时播放,建议 60 秒以上时长或静态动画 |
use_mainhand:toot_horn 、use_offhand:toot_horn | 使用山羊角时播放,建议 60 秒以上时长或静态动画 |
use_mainhand:brush 、use_offhand:brush | 使用刷子时播放 |
使用动画还支持通过物品 ID 或者标签来制作自定义动画。
这里只给出几个示例,你可以添加无限多个自定义动画:
名称 | 作用 | 备注 |
---|---|---|
use_mainhand$minecraft:shield 、use_offhand$minecraft:shield | 使用物品 ID 为 minecraft:shield (其实就是原版盾牌)的物品时播放 | $ 加物品 ID |
use_mainhand#minecraft:dirt 、use_offhand#minecraft:dirt | 使用标签为 minecraft:dirt (原版的泥土、草方块均有此标签)物品时播放 | # 加物品标签 |
挥动动画
因为原版中,玩家大部分情况下只能挥动主手,故左键挥动名称有所不同。主手的挥动统一以 swing
开头,后面可以通过 $
加物品 ID 或者 #
加物品标签的方式添加挥动动画。副手则是以 swing_offhand
开头。
挥动动画播放较为特殊,即使玩家停止挥动,挥动动画也不会中断,直至播放完毕。
挥动动画默认自带了 8 个内部分类动画,这些动画一般情况下能兼容其他模组:
名称 | 作用 |
---|---|
swing:sword 、swing_offhand:sword | 挥动剑时播放 |
swing:axe 、swing_offhand:axe | 挥动斧子时播放 |
swing:pickaxe 、swing_offhand:pickaxe | 挥动镐子时播放 |
swing:shovel 、swing_offhand:shovel | 挥动铲子时播放 |
swing:hoe 、swing_offhand:hoe | 挥动锄头时播放 |
swing:shield 、swing_offhand:shield | 挥动盾牌时播放 |
swing:throwable_potion 、swing:throwable_potion | 丢出投掷型药水时播放 |
swing:fishing_rod 、swing:fishing_rod | 丢出/收回钓鱼竿时播放2.3.0 新增 |
挥动动画还支持通过物品 ID 或者标签来制作自定义动画。这里只给出几个示例,你可以添加无限多个自定义动画:
名称 | 作用 | 备注 |
---|---|---|
swing$minecraft:shield | 手持物品 ID 为 minecraft:shield (其实就是原版盾牌)挥动时播放 | $ 加物品 ID |
swing#minecraft:dirt | 手持标签为 minecraft:dirt (原版的泥土、草方块均有此标签)挥动时播放 | # 加物品标签 |
持有动画
持有动画会在玩家持有物品(此时物品没有使用或挥动)时播放。当玩家切换不同的物品时,持有动画都会从头播放一次,从而做出切换武器的动画效果。建议使用较长时长的动画。
持有动画有主手副手之分,以 hold_mainhand
或 hold_offhand
开头,可以同时播放。后面通过 $
加物品 ID 或者 #
加物品标签的方式添加持有动画。
由于原版的充能十字弓和抛出的鱼竿比较特殊,无法通过物品 ID 或者物品 tag 识别,故特意为其添加了固定名称的动画。我们还为原版一些特殊物品增加了内部分类,一并列入其中:
名称 | 作用 |
---|---|
hold_mainhand:empty 、hold_offhand:empty | 不持有任何东西时播放的动画 |
hold_mainhand:charged_crossbow 、hold_offhand:charged_crossbow | 手持充能十字弓时的动画 |
hold_mainhand:crossbow 、hold_offhand:crossbow | 持有十字弓(未充能)时播放 |
hold_mainhand:fishing_rod 、hold_offhand:fishing_rod | 持有钓鱼竿时播放2.3.0 新增 |
hold_mainhand:fishing | 持有抛出鱼钩的鱼竿时播放 (特殊,仅此一个) |
hold_mainhand:slashblade 、hold_offhand:slashblade | 持有拔刀剑时播放2.3.0 新增 |
hold_mainhand:sword 、hold_offhand:sword | 持有剑时播放 |
hold_mainhand:axe 、hold_offhand:axe | 持有斧子时播放 |
hold_mainhand:pickaxe 、hold_offhand:pickaxe | 持有镐子时播放 |
hold_mainhand:shovel 、hold_offhand:shovel | 持有铲子时播放 |
hold_mainhand:hoe 、hold_offhand:hoe | 持有锄头时播放 |
hold_mainhand:shield 、hold_offhand:shield | 持有盾牌时播放 |
hold_mainhand:throwable_potion 、hold_offhand:throwable_potion | 持有投掷型药水时播放 |
hold_mainhand:eat 、hold_offhand:eat | 持有食物时播放 |
hold_mainhand:drink 、hold_offhand:drink | 持有药水、牛奶桶等时播放 |
hold_mainhand:bow 、hold_offhand:bow | 持有弓箭时播放 |
hold_mainhand:spear 、hold_offhand:spear | 持有三叉戟时播放 |
hold_mainhand:spyglass 、hold_offhand:spyglass | 持有望远镜时播放 |
hold_mainhand:toot_horn 、hold_offhand:toot_horn | 持有山羊角时播放 |
hold_mainhand:brush 、hold_offhand:brush | 持有刷子时播放 |
持有动画还支持通过物品 ID 或者标签来制作自定义动画。这里给出几个持有物品动画的示例,你可以添加无限多个自定义动画:
名称 | 作用 | 备注 |
---|---|---|
hold_mainhand$minecraft:shield 、hold_offhand$minecraft:shield | 手持物品 ID 为 minecraft:shield (其实就是原版盾牌)无任何操作时播放 | $ 加物品 ID |
hold_mainhand#minecraft:dirt 、hold_offhand#minecraft:dirt | 手持标签为 minecraft:dirt (原版的泥土、草方块均有此标签)无任何操作时播放 | # 加物品标签 |