【基岩版附加包进阶教程】行为包的动画及动画控制器
本帖最后由 不道 于 2023-1-31 09:00 编辑前排提醒:本教程默认读者已了解基本生物/物品/函数命令/指令等等的情况下进行
以上可以参考站内教程,如@782 的附加包教程系列
让我们开始吧!
行为包里的动画(animations)和动画控制器(animation_controllers),有些人可能会顾名思义,诶,这不就是一个保存动画,一个控制动画吗
其实吧,并不准确,因为在行为包里的这些,都是执行指令的(在神器addon里很常见)
动画控制器部分
首先我们得了解一个常识:在基岩版json里,是允许molang代码的存在的,但是在这个帖子里,大家只需了解molang代码中query是读取的意思就行了
接下来看一个典型的一个动画控制器代码
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.kar98": {
"initial_state": "setup",
"states": {
"setup": {
"transitions": [
{
"kar98.5": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2"
}
]
},
"kar98.5": {
"animations": [
"kar98shoot"
],
"transitions": [
{
"kar98.4": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2 && query.all_animations_finished"
}
],
"on_entry": [
"/title @s actionbar 4/5",
"/playsound addon.kar98",
"/summon addon:shell ^-0.45^1.59^0.44",
"/camerashake add @s 1 0.1 rotational"
]
},
"kar98.4": {
"animations": [
"kar98shoot"
],
"transitions": [
{
"kar98.3": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2 && query.all_animations_finished"
}
],
"on_entry": [
"/title @s actionbar 3/5",
"/playsound addon.kar98",
"/summon addon:shell ^-0.45^1.59^0.44",
"/camerashake add @s 1 0.1 rotational"
]
},
"kar98.3": {
"animations": [
"kar98shoot"
],
"transitions": [
{
"kar98.2": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2 && query.all_animations_finished"
}
],
"on_entry": [
"/title @s actionbar 2/5",
"/playsound addon.kar98",
"/summon addon:shell ^-0.45^1.59^0.44",
"/camerashake add @s 1 0.1 rotational"
]
},
"kar98.2": {
"animations": [
"kar98shoot"
],
"transitions": [
{
"kar98.1": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2 && query.all_animations_finished"
}
],
"on_entry": [
"/title @s actionbar 1/5",
"/playsound addon.kar98",
"/summon addon:shell ^-0.45^1.59^0.44",
"/camerashake add @s 1 0.1 rotational"
]
},
"kar98.1": {
"animations": [
"kar98shoot"
],
"transitions": [
{
"kar98.0": "query.get_equipped_item_name=='kar98' && query.item_remaining_use_duration > 2 && query.all_animations_finished"
}
],
"on_entry": [
"/title @s actionbar 0/5",
"/playsound addon.kar98",
"/replaceitem entity @p slot.weapon.mainhand 0 addon:kar98_empty 1 0",
"/summon addon:shell ^-0.45^1.59^0.44",
"/camerashake add @s 1 0.1 rotational"
]
},
"kar98.0": {
"transitions": [
{
"setup": "query.all_animations_finished"
}
],
"on_entry": [
"/playsound addon.pull",
"/title @s actionbar 弹药上膛"
]
}
}
}
}
}
怎么样,是不是感觉晕晕的?别急,我们逐步分析
首先是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这些子组件,可以去文档看(
动画部分
老规矩,看代码
{
"format_version": "1.8.0",
"animations": {
"animation.kar98.reload": {
"loop": false,
"animation_length": 4.8,
"timeline": {
"0.0": "/title @s actionbar 装填中",
"0.1": "/playsound reload.kar98",
"0.2": "/clear @s addon:kar98 0 1",
"0.5": "/title @s actionbar 装填中",
"1.0": "/clear @s addon:kar98_empty 0 1",
"1.5": "/clear @s addon:792mag5 0 1",
"2.0": "/title @s actionbar 装填中",
"2.4": "/title @s actionbar 装填中",
"2.5": "/title @s actionbar 装填完成",
"3.3": "/give @s addon:kar98"
}
}
}
}
前面三行就不必多说了
loop是定义这个动画是否循环,后面填布尔值
animation_length是动画的时长
timeline是时间线
下面就是在这个时间线里每秒执行的指令(注意,时间点数不能大于动画时长)
如果你想让你这个动画能被动画控制器调用的话,需要在实体文件里添加调用名及调用文件id,然后再动画控制器里调用这个调用名,这里就不多说(肝不下去了)
没了
好氵啊啊啊啊啊啊啊啊
没人吗,我来占个沙发,感谢作者大大,让我一个萌新学习如何做addon,希望作者大大更新快点 e,为毛线我的都加好了但是进游戏没动画
页: [1]