Files
2025-08-25 18:36:29 +08:00

2.4 KiB
Raw Permalink Blame History

front, hard, time
front hard time
https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/1_1.b3d4b5ee.png 进阶 20分钟

行为与动画组合

作者:境界

我们希望生物会因某种行为而发生动作上的改变这种改变更多是暴露在外给玩家看到的。比如希望生物在攻击时会表现攻击动画希望它们在水面上移动时会做出游泳动画。在基岩版中使用Molang语法配合动画控制器可以做出丰富的动画组合。Molang语言是基岩版独有的一种简易的表达式语言它主要作用于计算和获取游戏系统内的属性值由于设计的比较底层因此在语言优化上的优势远远大于脚本引擎。能够从游戏内获得的属性绝大多数服务于自定义实体、自定义物品、自定义方块上这些属性又由query函数所返回它们就像MODSDK上的接口根据不同query函数所服务的对象可以返回它们携带的属性。例如我想知道某只羊是否是幼体可以在molang中读取query.is_baby函数来获得羊是否是幼体。更多的query函数表可以从Minecraft wiki上找到

行为与动画示例①

①羊在幼体时它看起来头特别的大比成年的羊还大。这是因为羊这个生物注册了一个放大头部位的动画判断羊是幼体使用了query.is_baby函数。从羊的生物定义文件中可以看到放大羊头的动画资源名称为baby_transform而baby_transform的播放条件是query.is_baby必须为1文档告知这个函数只会返回1真或者0假。在Molang中布尔值由数字代替不为0为真0为假。因此{动画: molang语法}即告知游戏当某只羊是幼体时则放大头部的动画会播放。这里的molang语法简写为"query.is_baby"相当于若query.is_baby不为0则为真。

行为与动画示例②

①猪在移动的时候用到了walk这个动画它被注册在了猪的定义文件里。同样使用molang语法根据文档可以知道query.modified_move_speed会根据生物的速度返回0~1之间单位化取值若速度慢慢地走出来则返回1若因为部分组件行为使用了速度调整的键对可能不会刚好满足1但是由于大于0的缘故最后在上图中每当猪移动的时候都会返回真则播放walk动画。