﻿1
00:00:04,470 --> 00:00:05,310
‫你好, 欢迎｡

2
00:00:05,310 --> 00:00:11,280
‫这节课我们将填充动画状态机, 这样就有了更多的状态, 使我们可以有一个动画,

3
00:00:11,280 --> 00:00:16,320
‫让我们跳转到初始跳转状态｡

4
00:00:16,320 --> 00:00:21,840
‫正如你所看到的, 我的跳跃还有一点弹性,

5
00:00:21,840 --> 00:00:28,830
‫我们将学习诸如自动转换之类的东西, 以及如何将一个状态机嵌套在另一个状态机中, 这就是我们将为广告死亡动画所做的｡

6
00:00:28,830 --> 00:00:31,980
‫现在, 让我们深入了解一下它的工作原理｡

7
00:00:32,430 --> 00:00:41,070
‫正如上节课所讲的, 我们将把空中变量连接到游戏中｡

8
00:00:41,100 --> 00:00:48,570
‫现在我们要做的就是从兵或者特别是从我们的射手角色那里得到｡

9
00:00:48,810 --> 00:00:54,840
‫我们想从本质上弄清楚这个角色是否是空降的｡

10
00:00:55,200 --> 00:01:01,620
‫而我发现你能做到这一点的唯一方法本质上是通过角色运动组件｡

11
00:01:01,620 --> 00:01:02,820
‫让我来告诉你我的意思｡

12
00:01:02,820 --> 00:01:07,800
‫如果我们去到我们的铸造节点是铸造到射手字符, 然后我们可以拖了这一点｡

13
00:01:07,800 --> 00:01:12,660
‫事实上, 我们能做的是在这个特定实例中进行更一般的强制转换, 因为我们不需要与is

14
00:01:12,660 --> 00:01:16,080
‫dead相关的特定信息｡

15
00:01:16,380 --> 00:01:23,910
‫我现在要做的是, 我们用这个大头针, 兵的主人, 在这个例子中,

16
00:01:23,910 --> 00:01:30,360
‫我们要对一个角色进行强制转换, 因为我们只需要知道这是一个角色实例.

17
00:01:30,360 --> 00:01:35,880
‫然后, 我们将在序列节点上添加一个新的执行大头针, 将其向下拖动到我们的角色转换,

18
00:01:35,880 --> 00:01:39,690
‫然后从角色将拖动到其角色大头针｡

19
00:01:39,690 --> 00:01:46,200
‫我们要找的基本上是, 沿着空降线的东西, 没有什么, 也许跳跃看起来更有趣,

20
00:01:46,230 --> 00:01:53,850
‫它说的是, 跳跃, 提供力量, 可以跳跃, 跳跃, 所有这类的东西｡

21
00:01:53,850 --> 00:01:56,400
‫我们有发现, 但还不完全是这样｡

22
00:01:56,400 --> 00:01:58,410
‫如果我们寻找坠落呢？

23
00:01:58,410 --> 00:01:59,100
‫你去那里｡

24
00:01:59,100 --> 00:02:00,720
‫我们有一个正在下降｡

25
00:02:00,720 --> 00:02:06,930
‫如果你点击它, 你可以看到它会自动获取那个角色的动作成分,

26
00:02:06,930 --> 00:02:10,860
‫看看我们是否在坠落｡

27
00:02:11,310 --> 00:02:22,200
‫然后我们可以把它传递给airborne, 显然我们只在角色转换成功的情况下才能设置它.

28
00:02:22,200 --> 00:02:25,470
‫我们把那个执行针钩在那里｡

29
00:02:25,860 --> 00:02:27,450
‫您可以继续编译它｡

30
00:02:27,450 --> 00:02:31,590
‫显然, 它不会改变预览, 所以我们必须去尝试和发挥它｡

31
00:02:31,590 --> 00:02:40,410
‫让我们来玩跳跃, 你可以看到这个下降的变量立即为真, 这实际上是非常好的｡

32
00:02:40,410 --> 00:02:46,260
‫我们能够跳跃和降落, 跳跃和降落, 杀死我们的敌人, 很明显｡

33
00:02:47,160 --> 00:02:51,960
‫现在我想给我们的动画图增加一点复杂性｡

34
00:02:51,960 --> 00:02:56,340
‫在运动状态机中, 我们有两个状态｡

35
00:02:56,340 --> 00:03:05,730
‫但我真正想做的是播放一个跳跃动画, 然后是一个我们在空中的动画, 然后是一个我们着陆的动画｡

36
00:03:06,240 --> 00:03:09,570
‫要做到这一点, 我们需要在我们的状态机中有更多的状态｡

37
00:03:09,570 --> 00:03:10,650
‫那我们继续吧｡

38
00:03:10,650 --> 00:03:14,010
‫我来做其中一个状态, 你来做最后一个｡

39
00:03:14,460 --> 00:03:17,430
‫第一个是跳跃态｡

40
00:03:18,560 --> 00:03:22,270
‫这将播放一个动画, 让我们离开地面｡

41
00:03:22,280 --> 00:03:26,660
‫因此, 让我们进入跳跃状态, 并输出动画姿势｡

42
00:03:26,660 --> 00:03:28,400
‫我们将链接一个新的动画｡

43
00:03:28,400 --> 00:03:29,270
‫我们去找jump

44
00:03:29,270 --> 00:03:32,210
‫我们要找的是所有有战斗经验的潜水员｡

45
00:03:32,510 --> 00:03:35,450
‫所以我们要寻找跳跃式战斗｡

46
00:03:35,450 --> 00:03:36,280
‫你去那里｡

47
00:03:36,290 --> 00:03:37,520
‫而这正是我们想要的｡

48
00:03:37,520 --> 00:03:43,010
‫然后, 我们将返回到运动状态机, 我们希望连接一些转换｡

49
00:03:43,010 --> 00:03:45,620
‫所以我们要从接地过渡到跳跃｡

50
00:03:45,740 --> 00:03:48,500
‫如果我们在空中就会发生这种情况｡

51
00:03:48,500 --> 00:03:52,100
‫所以放在空中就是空降在那里｡

52
00:03:52,130 --> 00:03:55,670
‫不幸的是, 我无法改变这种转变｡

53
00:03:55,670 --> 00:04:00,200
‫我们只需要删除这两种情况下的旧过渡｡

54
00:04:00,560 --> 00:04:06,380
‫然后我们需要一个从跳跃到悬空的过渡, 但是我们没有变量或者状态.

55
00:04:06,380 --> 00:04:09,830
‫那我们什么时候从跳跃过渡到他的空降？

56
00:04:09,830 --> 00:04:13,100
‫我们想在跳跃动画结束后再做｡

57
00:04:13,100 --> 00:04:17,060
‫当我们完成跳跃时, 如果你去看一下跳跃动画,

58
00:04:17,060 --> 00:04:20,240
‫你可以看到它涉及到他像这样把脚抬离地面｡

59
00:04:20,240 --> 00:04:26,870
‫所以我们希望在动画完成后过渡到顶点动画｡

60
00:04:26,870 --> 00:04:29,540
‫幸运的是, 在过渡中有一个选项｡

61
00:04:29,540 --> 00:04:34,070
‫如果选择转换而不是进入转换, 则可以查看其详细信息窗格｡

62
00:04:34,460 --> 00:04:36,020
‫这里有一个选择｡

63
00:04:36,810 --> 00:04:42,630
‫其中我展开出来, 表示基于序列的自动规则播放器处于状态｡

64
00:04:42,900 --> 00:04:48,270
‫如果你检查一下,

65
00:04:48,270 --> 00:04:54,900
‫基本上它要做的是当我们几乎完成跳跃时, 它会开始过渡到下一个动画, 你可以实际控制过渡的时间和交叉渐变的时间｡

66
00:04:54,900 --> 00:05:01,320
‫在混合设置中, 您可以看到混合的持续时间大约为0｡  2, 但鉴于这两个函数相互过渡得非常好,

67
00:05:01,320 --> 00:05:06,330
‫我将它设为0. 01.

68
00:05:06,330 --> 00:05:08,580
‫所以我将做一个非常短的过渡｡

69
00:05:08,790 --> 00:05:10,560
‫让我们看看它是什么样子的｡

70
00:05:10,560 --> 00:05:12,150
‫所以我们要进入空中｡

71
00:05:12,150 --> 00:05:16,710
‫它会播放跳跃动画, 然后直接进入悬空状态｡

72
00:05:16,710 --> 00:05:18,090
‫一旦动画完成｡

73
00:05:18,090 --> 00:05:21,060
‫让我们再试一次, 我们可以再试一次｡

74
00:05:21,060 --> 00:05:29,040
‫这就是问题所在, 因为我们还没有从空中状态过渡到地面状态, 这确实将是你的挑战｡

75
00:05:29,040 --> 00:05:33,450
‫因此, 您要做的是添加一个着陆状态, 该状态将播放着陆动画｡

76
00:05:33,450 --> 00:05:36,720
‫因此, 添加新状态, 添加最适合着陆的动画｡

77
00:05:36,720 --> 00:05:41,400
‫在你看来, 你可能想要寻找带有跳跃前缀和战斗后缀的东西｡

78
00:05:41,580 --> 00:05:46,290
‫然后你要从布尔飞行状态过渡到着陆状态｡

79
00:05:46,440 --> 00:05:52,920
‫然后, 当着陆动画完成时, 您将从着陆状态过渡到固定状态｡

80
00:05:53,780 --> 00:05:55,940
‫玩吧, 到处玩, 看看感觉如何｡

81
00:05:55,970 --> 00:05:56,820
‫感觉好吗？

82
00:05:56,840 --> 00:05:58,070
‫看起来对吗？

83
00:05:58,160 --> 00:06:04,520
‫你可能想看看调整这些过渡时间, 看看这是否会让事情感觉更好｡

84
00:06:04,550 --> 00:06:08,450
‫暂停视频, 尝试一下我们的状态机｡

85
00:06:10,560 --> 00:06:10,910
‫好吧, 我会的

86
00:06:10,920 --> 00:06:11,560
‫欢迎回来｡

87
00:06:11,580 --> 00:06:12,770
‫所以我们来试试吧｡

88
00:06:12,780 --> 00:06:14,790
‫我们将在这里添加一个新状态｡

89
00:06:14,820 --> 00:06:16,500
‫这将被称为着陆｡

90
00:06:17,350 --> 00:06:21,390
‫在这个着陆状态下, 如果我们进去, 我们需要一个动画｡

91
00:06:21,400 --> 00:06:30,730
‫我将搜索jump, 我们想要的是像这样的jump land combat, 然后我们可以回到我们的运动状态机｡

92
00:06:30,730 --> 00:06:33,820
‫我们需要从空中过渡到着陆｡

93
00:06:33,820 --> 00:06:35,170
‫让我们双击它｡

94
00:06:35,170 --> 00:06:46,390
‫这需要不是在空中, 基本上, 不是节点, 然后是空中, 传递到那里｡

95
00:06:46,510 --> 00:06:48,580
‫这就是我们的转换条件｡

96
00:06:48,580 --> 00:06:54,880
‫所以当我们在顶点时, 一旦“非空”被取消, 我们就进入着陆状态｡

97
00:06:55,030 --> 00:06:59,110
‫然后, 从着陆状态, 我们希望在完成时过渡到接地状态｡

98
00:06:59,110 --> 00:07:05,800
‫因此, 如果您单击过渡并选中自动规则复选框, 它将在完成时执行此操作｡

99
00:07:05,800 --> 00:07:06,940
‫我们来试试看｡

100
00:07:06,940 --> 00:07:08,350
‫我们要进入他的空降部队｡

101
00:07:08,350 --> 00:07:12,280
‫它玩跳跃, 它进入空降, 然后取消选中它｡

102
00:07:12,280 --> 00:07:14,620
‫飞机着陆后又飞回来｡

103
00:07:14,710 --> 00:07:15,760
‫我们再来一次

104
00:07:16,430 --> 00:07:17,600
‫看起来不错｡

105
00:07:17,630 --> 00:07:18,080
‫好吧, 我会的

106
00:07:18,080 --> 00:07:24,300
‫所以我们现在要做的就是试着玩它, 跳来跳去, 然后着陆｡

107
00:07:24,330 --> 00:07:24,680
‫好吧, 我会的

108
00:07:24,710 --> 00:07:26,030
‫这感觉挺好的｡

109
00:07:26,060 --> 00:07:32,600
‫当我着陆时, 在我着陆和正在播放的跑步动画之间有一点滞后｡

110
00:07:32,600 --> 00:07:39,440
‫现在, 我将单击从平台过渡到不动, 并查看平台过渡设置｡

111
00:07:39,890 --> 00:07:43,220
‫现在我们得到的持续时间为0｡  1.

112
00:07:43,310 --> 00:07:48,650
‫这就是我们进行过渡所花的时间和正在发生的事情｡

113
00:07:48,650 --> 00:07:53,360
‫那么在我们的着陆战斗动画中, 着陆要多长时间？

114
00:07:53,360 --> 00:07:54,590
‫战斗动画？

115
00:07:54,620 --> 00:07:57,260
‫如果我暂停它, 沿着到这里｡

116
00:07:57,350 --> 00:08:00,770
‫你可以看到它大约是0｡  2.

117
00:08:00,770 --> 00:08:10,040
‫所以它实际上需要整个时间, 并在这段时间里过渡到我们的地面运动｡

118
00:08:10,040 --> 00:08:15,530
‫所以这就是我们想要的, 因为一旦我们落地,

119
00:08:15,530 --> 00:08:22,820
‫一旦游戏告诉我们我们已经落地, 我们就想开始展示一些脚的动作, 否则看起来会有点奇怪｡

120
00:08:22,970 --> 00:08:29,600
‫因此, 我们希望过渡尽快开始, 这就是为什么我们很少播放着陆动画,

121
00:08:29,600 --> 00:08:35,120
‫并尽可能快地过渡到接地动画｡

122
00:08:35,150 --> 00:08:42,710
‫这里我们唯一可以调整的是过渡模式, 它决定了曲线的形状, 即随着时间的推移,

123
00:08:42,710 --> 00:08:48,890
‫我们有多少着陆和接地｡

124
00:08:48,890 --> 00:08:53,000
‫你可以测试各种不同的选择, 看看哪一种最适合你｡

125
00:08:53,030 --> 00:08:59,600
‫对我来说, 这是指数的感觉最好, 因为它显示尽可能多的接地尽早,

126
00:08:59,600 --> 00:09:02,460
‫但没有它的感觉不和谐｡

127
00:09:02,480 --> 00:09:08,690
‫所以如果我们现在做的是在空中, 然后回到地面, 你可以看到, 它感觉像是很快进入地面,

128
00:09:08,690 --> 00:09:12,210
‫这是我们想要的｡

129
00:09:12,230 --> 00:09:16,520
‫所以我将继续点击播放, 看看是否感觉更好｡

130
00:09:17,210 --> 00:09:21,290
‫是的, 我落地时感觉更灵敏了, 这正是我想要的｡

131
00:09:21,440 --> 00:09:27,170
‫现在, 在实践中, 如果您有更多的动画要处理,

132
00:09:27,170 --> 00:09:31,580
‫您可能希望对着陆状态执行的操作是在那里有一个混合空间, 并有一个恢复动画｡

133
00:09:31,580 --> 00:09:36,590
‫因此, 根据你撞击地面的力度, 你可能会播放一个恢复动画,

134
00:09:36,590 --> 00:09:39,380
‫它是根据你移动的方向混合的｡

135
00:09:39,380 --> 00:09:44,600
‫所以他会砰的一声落地, 但有点向左摇晃, 比如说｡

136
00:09:44,630 --> 00:09:48,770
‫现在, 我们不会在这里讨论这些内容, 因为我们没有动画｡

137
00:09:48,770 --> 00:09:51,090
‫但理论上, 你可能会这么做｡

138
00:09:51,110 --> 00:10:00,710
‫最后一个小挑战是我们现在已经把布尔的混合姿势用于我们的死亡动画｡

139
00:10:00,800 --> 00:10:04,850
‫这可以通过一个新的死亡状态机来实现｡

140
00:10:04,970 --> 00:10:14,060
‫看看你是否可以尝试重构这个动画图, 这样它就可以用一个状态机来处理死亡, 而不是用布尔来混合姿势｡

141
00:10:14,300 --> 00:10:16,830
‫所以希望你接受了我的挑战｡

142
00:10:16,850 --> 00:10:23,510
‫我们要做的是右键单击创建一个全新的状态机｡

143
00:10:23,690 --> 00:10:29,690
‫我们将把这个状态机重命名为death或类似的名称, 然后进入这个状态机,

144
00:10:29,690 --> 00:10:32,920
‫我们将添加两个状态｡

145
00:10:32,930 --> 00:10:39,110
‫一个是活着的状态, 另一个是死的状态.

146
00:10:40,160 --> 00:10:42,140
‫然后我们将添加一些过渡｡

147
00:10:42,140 --> 00:10:45,410
‫所以从活着到死去的转变, 这是要发生的｡

148
00:10:45,410 --> 00:10:50,840
‫如果我们双击, 它会发生当是死的是真的像这样｡

149
00:10:51,440 --> 00:10:58,970
‫然后我们想要一个, 可能我们想要一个, 返回到活跃状态的转换, 我们可以只做测试,

150
00:10:58,970 --> 00:11:05,560
‫至少它有一个非布尔值, 它有一个是死的, 所以基本上是不死的｡

151
00:11:05,570 --> 00:11:07,550
‫我们要从另一条路回去｡

152
00:11:08,120 --> 00:11:10,460
‫我们希望默认为处于活动状态｡

153
00:11:10,460 --> 00:11:11,210
‫有道理｡

154
00:11:11,210 --> 00:11:12,980
‫然后我们需要一些动画来播放｡

155
00:11:13,220 --> 00:11:15,650
‫所以对于Dead, 我们已经有了死亡动画｡

156
00:11:15,650 --> 00:11:24,770
‫所以我将回到动画图中把它剪下来, 回到死亡状态, 然后把死亡动画粘贴到这里.

157
00:11:25,840 --> 00:11:27,220
‫然后在我们住的状态下｡

158
00:11:27,220 --> 00:11:28,420
‫我们想在那里玩什么？

159
00:11:28,450 --> 00:11:30,610
‫实际上, 我们想玩其他的｡

160
00:11:30,620 --> 00:11:32,290
‫我们要打的是宗旨集｡

161
00:11:32,290 --> 00:11:33,930
‫我们想玩移动｡

162
00:11:33,940 --> 00:11:35,800
‫所以我要把这些都剪掉｡

163
00:11:35,920 --> 00:11:37,600
‫这就是有趣的地方｡

164
00:11:37,600 --> 00:11:42,190
‫现在我们有了一个在状态机中运行的状态机, 这是完全可能的｡

165
00:11:42,190 --> 00:11:50,230
‫然后我们可以把这个目标, set, 输入到我们的输出中, 然后回到我们的动画图,

166
00:11:50,230 --> 00:11:56,710
‫删除所有的节点, 然后把我们的死亡状态机输入到我们的输出中｡

167
00:11:56,830 --> 00:12:00,370
‫这是可行的, 因为我们有两个顶级状态｡

168
00:12:00,370 --> 00:12:02,590
‫基本上, 我们是说他们要么活着要么死了｡

169
00:12:03,040 --> 00:12:05,020
‫如果你死了, 你就播放一个死亡动画｡

170
00:12:05,020 --> 00:12:10,060
‫如果你还活着, 你会做这个目标偏移, 你会做你的运动状态机,

171
00:12:10,060 --> 00:12:13,000
‫它有自己的一组状态.

172
00:12:13,000 --> 00:12:15,310
‫因此, 它是在状态机之上分层状态机｡

173
00:12:15,310 --> 00:12:17,650
‫希望你能看到它是多么的强大｡

174
00:12:17,890 --> 00:12:22,030
‫所以我们现在能做的就是死了, 它会覆盖其他正在运行的东西｡

175
00:12:22,030 --> 00:12:25,810
‫它不再运行运动状态机因为我们只是在播放死亡动画｡

176
00:12:25,870 --> 00:12:34,600
‫如果我死了, 我们回到现场运行动画, 但我们可以重放我们的死亡至关重要, 这是以前我们不能做到的｡

177
00:12:34,600 --> 00:12:43,060
‫这是因为当你离开动画状态机中的一个状态时, 它会重置其中的动画, 它会重置到开始｡

178
00:12:43,060 --> 00:12:45,700
‫所以这对死亡来说是个非常有用的功能｡

179
00:12:45,700 --> 00:12:50,050
‫简单回顾一下, 我们在这节课上学到的是, 如何构建更复杂的状态机,

180
00:12:50,330 --> 00:12:51,910
‫以及如何在彼此内部构建状态机｡

181
00:12:51,910 --> 00:12:58,750
‫我们已经了解了自动转换, 以及它们如何帮助我们更轻松地完成一系列转换｡

182
00:12:58,750 --> 00:13:00,070
‫我们下节课再见｡

