夏令营补给 04 | 大头滤镜?不,为你的自定义生物加点动画!

学习委员

2021-08-122084次浏览

0评论

1收藏

0点赞

分享

《我的世界》高校开发者夏令营进行中!为了让大家更系统地学习,除课堂知识外,学习委员还将联合发发菌,为大家投放额外的干货补给。本期为第4期。

不少开发者表示想看与自定义生物相关的内容,今天学习委员和发发菌就给大家搬来了进阶版的自定义生物教程!一起学习一下叭~想全面认识自定义生物可以点这里了解哦)

在制作自定义生物时,我们希望生物会因某种行为而发生动作上的改变,比如在攻击时会表现攻击动画,在水面上移动时会做出游泳动画。

在基岩版中,使用Molang语法配合动画控制器就可以实现这些动画组合

解读

Molang语言基岩版独有的一种简易的表达式语言,它主要作用于计算和获取游戏系统内的属性值,由于设计的比较底层,因此在语言优化上的优势远远大于脚本引擎。

能够从游戏内获得的属性绝大多数服务于自定义实体、自定义物品、自定义方块上,这些属性又由query函数所返回,它们就像MODSDK上的接口,根据不同query函数所服务的对象,可以返回它们携带的属性

为了方便开发者们理解下面我们就举两个例子~

 小羊的大头效果 

羊在幼体时,头看起来比成年的羊还大。这是因为羊这个生物注册了一个放大头部的动画,并用query.is_baby来判断羊是否为幼体

从羊的生物定义文件中可以看到,放大羊头的动画资源名称为baby_transform,而baby_transform的播放条件是query.is_baby为1。

所以,此处的{动画: molang语法}(即{"baby_transform":"query.is_baby"})是在表示,当某只羊是幼体时,则播放放大头部的动画。这里的molang语法简写为"query.is_baby",相当于若query.is_baby不为0,则为

 猪的移动动画 

猪在移动的时候,用到了walk这个动画,它被注册在了猪的定义文件里。

同样使用molang语法,根据文档可以知道,query.modified_move_speed会根据生物的速度返回0~1之间单位化取值。

生物慢慢地走出来,则返回1;有时因为部分组件行为使用了速度调整的键对,可能不会刚好满足1,但是由于大于0,根据图中的函数猪移动的时候还是会返回真,所以同样会播放walk动画

我们知道动画控制器是存放在资源包中的,用于控制动画的状态切换。但实际上,行为包中也可以存在动画控制器。

 行为包控制器的写法 

①在行为包根目录中创建animation_controllers的文件夹,控制器文件都会放在这里。

②根据上图可以看到,内容与资源包类似,除了在每个状态下可以放置animations动画集合以外,还有两个新的集合:

③在上图中,我们设定生物在发现目标时,给予一格10秒的1级强力状态效果;并在生物失去目标时,清理掉身上全部的状态效果。

④在生物行为文件里,注册动画控制器,并在scripts/animate下持续执行控制器。在执行前,同样可以额外通过Molang条件判断控制器是否需要执行哦!

在《我的世界》中,有多种方式能使Mod与附加包协同工作,快get起来吧!

本期的进阶版自定义生物就讲解到这里啦~学会这篇进阶教程,来为你的生物添加亿点点动画效果叭~

(本文来源于公众号“我的世界Minecraft开发者”,作者发发菌)


网易游戏学院官方讨论QQ群:780916962
欢迎各位同学加群,与众多游戏爱好者一同学习交流~

评论 0

0/1000
网易游学APP
为热爱赋能
扫描二维码下载APP