【游戏技术群】959392658  【游戏出海群】12067810
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:648

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 456|回复: 6

[外文翻译] Animator- Interruption Source用法

[复制链接]  [移动端链接]
排名
1
昨日变化

7201

主题

7731

帖子

2万

积分

Rank: 16

UID
1231
好友
185
蛮牛币
11748
威望
30
注册时间
2013-7-29
在线时间
3692 小时
最后登录
2019-1-18

社区QQ达人活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

发表于 2018-12-7 14:12:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
1.jpg
通常情况下,动画状态机(State Machine) 在 动画过渡(Transition) 时是无法被打断的,一旦你开始从一个 动画节点(State) 过渡到另一个 State 时,你无法中断这种行为。就好比一个乘客乘坐在一部已经离开地面的飞机上,你能做的只是好好享受这次旅途直到抵达终点,你却无法改变这次飞行航线。在大多数情况下,都是如此。

但是,如果你需要对动画过渡拥有更多的控制权,unity 的 State Machine 给你提供了一些方法来实现。当你的飞机已经起飞,你对旅途的终点并不满意,你可以选择坐在飞行员的位置中途改变航线。这意味着State 与 State之间有更多的可能性,同样的,也增加了State Machine 的复杂性。

首先,让我们看几个简单的例子,先从一个简单的State Machine开始,它拥有4个 State,分别是 A, B, C, D 以及相对应的 触发行为(Triggers) 连结状态机上的每个State(每一个箭头代表一种Transition,对应一种触发行为)。

2.jpg

添加一些动画状态以及一些动画过渡
一般情况下,当我们从State A 向 State B (A->B) 进行 Transition 时,我们的动画状态机State Machine 在这个过渡过程中是不会发生任何改变的,直到它抵达到State B。但是如果我们选中这个过渡线段(A与B之间的白色箭头线段),我们可以从检视面板中看到有一个 Interruption Source 的选项,我们将其状态从 None 改成 Current State,此时这个过渡动作才会被“某些”在触发行为打断(如下图):
3.jpg

动画过渡的检视面板
为什么说是某些?因其下方的 Ordered Interruption 单选框为勾选状态,这个选项意味着只有在当前State(State A)上拥有更高优先级的 Transition 才可以打断 A->B 这个过渡动作。(如下图):
除了本身A->B之外,A->C的优先级要高于 A->D,
4.jpg

A 动画状态节点上的过渡动作及其优先级
那么,即使我们触发了A ->B的 Transition,又立刻去触发 A->D的过渡动作,我们的整个过程是不会被打断的。然而,当我们触发的不是 A->D 而是 A->C,则 State Machine 会立刻打断A->B 的Transition, 执行 A->C 的 Transition。

而在动画系统内部,它会记住被打断的位置(X),并且将该位置(X)的动画与新Transition(A->C)终点(C)的动画进行融合过渡,如下图(X->C)。
5.jpg

被打断点X到C动作融合
在一个游戏中,经常会遇到动作被打断的情况,动画机便会快速的在这些被打断出与新的Transition 终点进行模拟融合以至于整个State Machine看起来更流畅。

如果我们不勾选 Ordered Interruption 单选框,那么情况会变得更加简单, A->C 和 A->D 都可以打断A->B这个Transition。当然,如果 A->C 和 A->D 的 Transition 同时被触发,那么 A->C 会成为打断者,因为它在Current State (State A)上拥有更高的优先级。

如果我们将 Interruption Source 改成 Next State, 那么 A->C 和 A->D 将无法打断这个过渡。但是,此时当我们在 A->B 过程中去触发 B->D,State Machine 将会立刻开始 A->D 的过渡,并且整个过程不需要完成 A->B 的Transition。

这种过渡模式同样适用于State B到其他的State,当然,同样的,B->D和B->C的过渡同时发生,那么优先采用优先级更高的(B->D)如下图,即发生A->D的过渡。
6.jpg

B 动画状态节点上的过渡动作及其优先级
最后,我们可以通过设置 Interruption Source 成 Current State Then Next State 或者 Next State Then Current State 来决定哪个动画State上的过渡节点优先权更高,前者表示先看当前State的优先级如果没有被触发,再看下一个State的优先级,后者则相反,来达到不同的融合与打断效果。

大家如果有不太清楚的地方,也可以自己新建一个工程,新建一个Animator以及一些Clip来测试效果。

以上便是StateMachine中Interruption Source的主要用法,希望对大家有帮助,大家也可以进行一些测试,如果有翻译的不恰当的,可以留言交流,谢谢。

[发帖际遇]: 清风 被钱袋砸中进医院,看病花了 2 蛮牛币. 幸运榜 / 衰神榜

跟我念“站长妹纸萌萌哒!”我说站长,你说YO!爱你们么么哒~
回复

使用道具 举报

排名
26647
昨日变化
8

0

主题

23

帖子

40

积分

Rank: 1

UID
304200
好友
1
蛮牛币
110
威望
0
注册时间
2018-11-11
在线时间
3 小时
最后登录
2018-12-7
发表于 2018-12-7 15:32:19 | 显示全部楼层
Animator- Interruption Source用法

回复 支持 反对

使用道具 举报

6蛮牛粉丝
1419/1500
排名
3710
昨日变化
17

0

主题

835

帖子

1419

积分

Rank: 6Rank: 6Rank: 6

UID
210390
好友
0
蛮牛币
1701
威望
0
注册时间
2017-3-7
在线时间
188 小时
最后登录
2019-1-18
发表于 2018-12-7 16:49:10 | 显示全部楼层
[发帖际遇]: wdongzyzr 发帖时在路边捡到 1 蛮牛币,偷偷放进了口袋. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1000/1500
排名
2310
昨日变化
14

1

主题

103

帖子

1000

积分

Rank: 6Rank: 6Rank: 6

UID
126588
好友
0
蛮牛币
3989
威望
0
注册时间
2015-10-24
在线时间
296 小时
最后登录
2019-1-19
发表于 2018-12-7 17:53:11 | 显示全部楼层

回复

使用道具 举报

5熟悉之中
639/1000
排名
8116
昨日变化
84

0

主题

406

帖子

639

积分

Rank: 5Rank: 5

UID
300432
好友
1
蛮牛币
765
威望
0
注册时间
2018-10-18
在线时间
77 小时
最后登录
2019-1-20
发表于 2018-12-9 23:21:34 | 显示全部楼层
66666666666

回复

使用道具 举报

6蛮牛粉丝
1083/1500
排名
4358
昨日变化
21

2

主题

528

帖子

1083

积分

Rank: 6Rank: 6Rank: 6

UID
112390
好友
2
蛮牛币
1199
威望
0
注册时间
2015-7-7
在线时间
223 小时
最后登录
2019-1-19
发表于 2018-12-11 09:16:42 | 显示全部楼层

多谢分享!                     
[发帖际遇]: 一个袋子砸在了 swordlegend 头上,swordlegend 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复 支持 反对

使用道具 举报

5熟悉之中
509/1000
排名
6667
昨日变化
60

2

主题

188

帖子

509

积分

Rank: 5Rank: 5

UID
208267
好友
0
蛮牛币
988
威望
0
注册时间
2017-2-24
在线时间
123 小时
最后登录
2019-1-18
发表于 2018-12-13 09:47:42 | 显示全部楼层
这片风儿吹过

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表