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

100 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
front:
hard: 进阶
time: 20分钟
---
# 动画控制器
#### 作者:境界
动画控制器掌管生物播放动画的时机。一个生物实体可以同时加载多个动画资源,也可以同时加载多个动画控制器。动画控制器实际上是一个状态控制机,它在资源包上会用来播放动画,它在行为包上用来执行指令,或者指令“动画”。
浅粗地了解状态控制机,它实际上是一个特殊的逻辑管理模式,每个状态都有两个属性:
1)在当前状态下做什么;
2)如何转移到其他状态;
状态机之所以有用,是因为它们使开发者能够自然地将动画分解成逻辑流程,每个状态都处理自己的动画和逻辑。
![](./images/5_1.jpg)
例如,假设开发者要为自定义生物松鼠设置一个休息-移动动画,则它包含两种状态:
休息状态和移动状态,可视化流程图如上方所示。
```
{
"format_version":"1.10.0",
"animation_controllers":{
"controller.animation.squirrel.general":{
"initial_state":"default",
"states":{
"default":{
"blend_transition":0.1,
"blend_via_shortest_path":true,
"animations":[
"idle"
],
"transitions":[
{
"move":"query.is_moving"
}
]
},
"move":{
"animations":[
"move"
],
"transitions":[
{
"default":"!query.is_moving"
}
]
}
}
}
}
}
```
#### format_version
format_version是指代定义动画控制器文件的版本号目前有1.8.0、1.10.0这两个格式版本号。1.10.0的版本里基岩版再次重新整理了自定义生物的动画控制器写法格式。一般情况下使用最新的1.10.0的格式,是现在自定义生物的通用规范。
#### controller.animation.
每个控制器都必须以controller.animation.为固定前缀。后面的名称可以以生物名称作区隔。
#### initial_state
initial_state是指动画控制器的初始状态默认不写时默认值为default。
#### states
states是状态的集合在里面会包含动画集合切换状态集合。其中动画集合可以同时放置多个动画它们会在切换到该状态时马上播放。如松鼠摇头待机动画和松鼠摇尾巴待机动画。切换状态集合内会有存放其他状态的对象数据如上图中切换到移动状态时必须满足生物移动的条件。
最后是两个特殊属性blend_transition和blend_via_shortest_path。
blend_transition意为让动画状态切换更加顺滑合理分配该值可能会做出更加顺畅的动画切换效果它的值取0.0~1.0之间。
#### blend_via_shortest_path
blend_via_shortest_path意为是马上切换过渡到下个状态根据开发者需求而定。