开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 【基岩版附加包进阶教程】行为包的动画及动画控制器

 发表于 2022-6-4 16:31:36|显示全部楼层|阅读模式 IP:福建省
本帖最后由 不道 于 2023-1-31 09:00 编辑

前排提醒:本教程默认读者已了解基本生物/物品/函数命令/指令等等的情况下进行
以上可以参考站内教程,如@782 的附加包教程系列


让我们开始吧!


行为包里的动画(animations)和动画控制器(animation_controllers),有些人可能会顾名思义,诶,这不就是一个保存动画,一个控制动画吗
其实吧,并不准确,因为在行为包里的这些,都是执行指令的(在神器addon里很常见)


动画控制器部分
首先我们得了解一个常识:在基岩版json里,是允许molang代码的存在的,但是在这个帖子里,大家只需了解molang代码中query是读取的意思就行了


接下来看一个典型的一个动画控制器代码


怎么样,是不是感觉晕晕的?别急,我们逐步分析

首先是formate_version,是定义mc引擎版本的
animation_controllers则是定义这个文件是一个动画控制器文件
下一行是定义这个控制器的id,格式是:animation.controllers.你的id
下面的initial_state,是定义这个控制器初始执行的级别,写你的状态自定义扩展名


接下来是重点了,transitions下面是定义当触发某一条件时,转到指定的级别(state)
冒号前面的字符串里填一个自定义的id(注意,在这个段落里下面的也要是这个id)
冒号后面则是一行molang代码,格式为query.生物特性
这里的生物特性是指生物的某一状态,比如上面例子代码中的query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2就是当生物持有‘kar98’这个物品(注意,这里不是填物品id,是填物品id冒号后的词)并且使用这个物品的时间大于2的时候转到state(下面的on_entry),类似的常用状态还有is_baby(是幼年状态),is_adult(是成年状态),is_using_item(正在使用物品),is_sneaking(正在潜行),all_animations_finished(所有动画播放完毕),具体可以去文档找找(当需要多个molang代码时,可以用&&或者||,这两个一个是并且的意思,也就是要满足两边所有条件才行,一个是或者的意思,也就是两边满足一个条件就行)

下面就是on_entry了
这里的字符串里填的是事件,一般可以是mc指令,实体事件(event)和molang代码

还有on_exist
这里是这个级别转到其他级别时执行的指令/事件/molang

还有animations
可以在这个级别被执行时执行动画

另外还有sounds,particles这些子组件,可以去文档看(


动画部分
老规矩,看代码
  1. {
  2.   "format_version": "1.8.0",
  3.   "animations": {
  4.     "animation.kar98.reload": {
  5.       "loop": false,
  6.       "animation_length": 4.8,
  7.       "timeline": {
  8.         "0.0": "/title @s actionbar 装填中",
  9.         "0.1": "/playsound reload.kar98",
  10.         "0.2": "/clear @s addon:kar98 0 1",
  11.         "0.5": "/title @s actionbar 装填中",
  12.         "1.0": "/clear @s addon:kar98_empty 0 1",
  13.         "1.5": "/clear @s addon:792mag5 0 1",
  14.         "2.0": "/title @s actionbar 装填中",
  15.         "2.4": "/title @s actionbar 装填中",
  16.         "2.5": "/title @s actionbar 装填完成",
  17.         "3.3": "/give @s addon:kar98"
  18.       }
  19.     }
  20.   }
  21. }
复制代码


前面三行就不必多说了
loop是定义这个动画是否循环,后面填布尔值
animation_length是动画的时长
timeline是时间线
下面就是在这个时间线里每秒执行的指令(注意,时间点数不能大于动画时长)


如果你想让你这个动画能被动画控制器调用的话,需要在实体文件里添加调用名及调用文件id,然后再动画控制器里调用这个调用名,这里就不多说(肝不下去了)

没了

好氵啊啊啊啊啊啊啊啊

评分

参与人数 1铁粒 +50收起理由
 WZM*** + 50的确很氵(滑稽)

查看全部评分

苦力怕论坛,感谢有您~
 发表于 2022-6-12 23:44:12 来自手机|显示全部楼层 IP:广西
没人吗,我来占个沙发,感谢作者大大,让我一个萌新学习如何做addon,希望作者大大更新快点
2#2022-6-12 23:44:12回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-1-31 00:52:49 来自手机|显示全部楼层 IP:广东省
e,为毛线我的都加好了但是进游戏没动画
3#2023-1-31 00:52:49收起回复
Xiaosu2222023-11-1 17:43IP:广东省
回复举报
要在实体中引用。直接放着它是不行的
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-28 13:41

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3