﻿1
00:00:04,500 --> 00:00:05,730
‫大家好, 欢迎来到这堂课｡

2
00:00:05,730 --> 00:00:11,310
‫我们将使用AIM偏移量, 使网格能够上下移动其手臂｡

3
00:00:11,310 --> 00:00:15,360
‫当我们上下瞄准时, 让我们深入了解一下这是怎么回事｡

4
00:00:16,170 --> 00:00:20,940
‫所以现在, 如果我们上下瞄准,

5
00:00:20,940 --> 00:00:28,440
‫你可以看到我们的角色的手臂实际上什么都没有做, 枪看起来也不像是应该指向上, 开火, 击中我们实际击中的位置｡

6
00:00:28,710 --> 00:00:30,930
‫那么, 我们如何改变这种状况呢？

7
00:00:30,930 --> 00:00:33,450
‫这是我们动画蓝图的一个变化

8
00:00:33,450 --> 00:00:38,700
‫因此, 让我们继续, 打开动画蓝图作为起点, 并将其停靠到我们的主窗口｡

9
00:00:39,120 --> 00:00:44,250
‫然后, 我想向大家介绍一种我们以前从未见过的新型动画资源｡

10
00:00:44,250 --> 00:00:46,680
‫我们看到了混合空间, 我们看到了动画｡

11
00:00:46,680 --> 00:00:53,700
‫接下来我想给大家展示的是一个叫做动画偏移的东西, 特别是一个瞄准偏移｡

12
00:00:53,700 --> 00:01:02,130
‫如果我们在动画中寻找关键词ayo, 我们会寻找那些带有蓝色下划线的, 叫做目标偏移量的｡

13
00:01:02,130 --> 00:01:03,090
‫有几个｡

14
00:01:03,090 --> 00:01:09,180
‫我感兴趣的是群体作战, 应该就在这附近｡

15
00:01:09,180 --> 00:01:11,730
‫他们就去打一场闲散的A0战斗｡

16
00:01:11,970 --> 00:01:16,830
‫如果您选择它, 您会看到它看起来很像我们的混合空间｡

17
00:01:16,860 --> 00:01:25,680
‫但这次如果你移动绿色的小块, 它会改变角色网格的方向.

18
00:01:25,680 --> 00:01:30,720
‫所以如果我们走到左边, 他就把枪指向左边, 我们走到右边,

19
00:01:30,720 --> 00:01:32,670
‫他就把枪指向右边｡

20
00:01:32,670 --> 00:01:36,250
‫同样地, 如果你往上仰, 他会一直往上看｡

21
00:01:36,250 --> 00:01:39,240
‫他向下投, 他一直向下看, 并试图击落｡

22
00:01:39,510 --> 00:01:47,310
‫这个动画和我们之前看到的其他动画的区别在于, 它被称为加法动画｡

23
00:01:47,310 --> 00:01:51,750
‫如果您转到详细信息窗格, 您可以看到它是可添加的, 因为它显示了可添加的设置,

24
00:01:51,750 --> 00:01:55,920
‫并且有一个基于动画的姿势, 它是所有这些设置的基础｡

25
00:01:56,340 --> 00:02:02,430
‫基本上, 当它是可添加的时, 它的意思是这个动画可以添加到其他动画的顶部｡

26
00:02:02,430 --> 00:02:06,090
‫所以它说, 我可以在你跑的时候瞄准｡

27
00:02:06,090 --> 00:02:13,320
‫我可以添加关于我的手臂相对于你的跑步姿势移动了哪里的信息, 并将它们添加到顶部｡

28
00:02:13,500 --> 00:02:14,700
‫看起来怎么样？

29
00:02:14,700 --> 00:02:22,200
‫如果我们看一下动画蓝图, 我们要做的是在我们添加了所有关于运动的信息之后添加这些信息, 而不是在死亡之前,

30
00:02:22,200 --> 00:02:28,530
‫因为死亡应该是最后的事情｡

31
00:02:29,040 --> 00:02:31,140
‫所以我们想要运动｡

32
00:02:31,140 --> 00:02:32,970
‫所以我们有我们所有的跑步动画｡

33
00:02:32,970 --> 00:02:41,040
‫在此基础上, 我们想补充一点关于手臂应该移动到哪里的信息, 这样我们才能正确瞄准｡

34
00:02:41,130 --> 00:02:45,060
‫为此, 我们可以右键单击并添加目标偏移｡

35
00:02:45,060 --> 00:02:46,710
‫我们也可以从资源浏览器执行此操作｡

36
00:02:46,710 --> 00:02:53,580
‫我将查找A0, 然后如前所述, 我们将查找战斗版本, 它在浏览器中的位置不同｡

37
00:02:53,580 --> 00:03:01,140
‫有趣的是, 如果我跟踪它, 那么你会得到一个输入引脚, 上面写着什么是基地供电？

38
00:03:01,170 --> 00:03:07,050
‫请注意, 移动混合空间没有输入插针,

39
00:03:07,140 --> 00:03:14,580
‫因为它提供了整个动画, 而此目的偏移是因为它是一个附加动画, 它需要在其顶部添加一些内容｡

40
00:03:14,580 --> 00:03:20,040
‫所以你需要给予它一个基本姿势,

41
00:03:20,040 --> 00:03:28,260
‫这个姿势来自于我们的运动, 然后我们将把它输入到混合的假姿势中, 不管我们死了还是没死, 因为我们只在我们没死的时候才显示这个｡

42
00:03:29,000 --> 00:03:36,770
‫然后我想给你们看如果我把音高调成1或者180, 然后继续编译,

43
00:03:36,770 --> 00:03:41,750
‫你们就能看到他完全是在向上看.

44
00:03:41,900 --> 00:03:44,570
‫现在, 我想做的另一个调整是在事件图中｡

45
00:03:44,570 --> 00:03:50,120
‫目前, 我们有一个相当麻烦的情况, 我们不能调整动画预览中的任何东西,

46
00:03:50,120 --> 00:03:54,890
‫因为它被我们的事件图用零覆盖｡

47
00:03:54,890 --> 00:04:04,370
‫解决这个问题的一个简单的方法就是在这里放一个检查, 看看我们得到的典当所有者是否有效, 也就是说它是空的吗？

48
00:04:04,820 --> 00:04:10,280
‫如果我们在这里输入一个有效的, 带问号的会自动给我们这些执行节点,

49
00:04:10,280 --> 00:04:18,140
‫如果我们通过更新动画执行节点, 只在有效的情况下设置, 那么会发生的是,

50
00:04:18,170 --> 00:04:23,750
‫当你没有真正玩游戏, 也没有兵给我们提供信息时,

51
00:04:23,750 --> 00:04:26,960
‫它会允许我们设置它｡

52
00:04:26,960 --> 00:04:28,470
‫动画预览编辑器｡

53
00:04:28,490 --> 00:04:36,620
‫所以现在我可以改变速度, 你可以看到他开始运行与他的目标偏移设置高｡

54
00:04:36,860 --> 00:04:41,090
‫让我们把它设置成音高是一个变量｡

55
00:04:41,090 --> 00:04:47,120
‫我将右键单击pitch并提升该变量, 将该变量放到此处, 使其可见,

56
00:04:47,120 --> 00:04:50,510
‫然后将其名称更改为pitch.

57
00:04:51,110 --> 00:04:54,530
‫或者说得更具体一点, 这是瞄准球｡

58
00:04:54,530 --> 00:05:00,290
‫现在如果我们继续编译, 我们会意外地设置一个默认的瞄准俯仰角｡

59
00:05:00,290 --> 00:05:03,380
‫我们希望将其默认设置为零｡

60
00:05:03,560 --> 00:05:05,150
‫我将继续编译它｡

61
00:05:05,150 --> 00:05:11,270
‫现在如果我们继续改变速度, 然后改变瞄准间距｡

62
00:05:12,110 --> 00:05:17,090
‫你可以看到我们可以向上瞄准, 也可以向下瞄准, 这正是我们想要的｡

63
00:05:17,120 --> 00:05:20,180
‫现在的问题是, 我们的游戏还没有设定好.

64
00:05:20,180 --> 00:05:26,930
‫如果我们上下移动, 这些信息都不是来自我们的控制旋转和瞄准｡

65
00:05:27,020 --> 00:05:31,040
‫因此, 我们需要返回到事件图, 并在这里获得一些信息｡

66
00:05:31,070 --> 00:05:36,050
‫现在, 我将把这些东西分开一点, 因为这会变得很长｡

67
00:05:36,050 --> 00:05:47,720
‫我想在这个有效引脚上放置一个序列节点, 这样我就可以在垂直方向上稍微向下展开｡

68
00:05:47,720 --> 00:05:53,030
‫首先, 序列节点将在这里设置速度和角度｡

69
00:05:53,030 --> 00:05:57,290
‫然后我想我们可以把这些东西移到射手角色上｡

70
00:05:57,380 --> 00:06:04,610
‫我想我们可以把它进一步垂直向下, 把序列pin和对象pin连接到我们的try get pawn

71
00:06:04,610 --> 00:06:09,860
‫owner节点, 然后我们可以在序列中添加另一个pin｡

72
00:06:09,860 --> 00:06:13,820
‫而这次我想从我们的当铺老板那里得到两条信息｡

73
00:06:13,940 --> 00:06:17,330
‫第一个是控制旋转｡

74
00:06:17,330 --> 00:06:20,060
‫让我们来做一个get控制循环｡

75
00:06:20,360 --> 00:06:26,360
‫但这还不够, 因为我们的控制旋转, 如果我们分裂引脚, 你可以看到我们有一个音高在这里,

76
00:06:26,360 --> 00:06:29,570
‫我们可以尝试设置音高｡

77
00:06:29,570 --> 00:06:30,950
‫让我们让我们给予试吧｡

78
00:06:30,980 --> 00:06:38,570
‫所以如果我做一个设定, 把执行节点连接到序列中的执行节点, 再加一点重定向,

79
00:06:38,570 --> 00:06:46,320
‫如果我们编译, 保存, 点击播放, 然后瞄准, 会发生什么｡

80
00:06:46,340 --> 00:06:48,800
‫向下瞄准, 不要转身｡

81
00:06:48,800 --> 00:06:52,310
‫然后事情开始变得更奇怪了｡

82
00:06:52,400 --> 00:06:59,330
‫现在的情况是, 这种控制权的轮换是完全全局性的,

83
00:06:59,330 --> 00:07:02,870
‫所以没有考虑到我们的玩家已经面对的方向｡

84
00:07:02,930 --> 00:07:10,910
‫所以要考虑到这一点, 我们需要再去一次兵, 让演员轮换｡

85
00:07:10,910 --> 00:07:18,560
‫然后我们要找到的是演员的旋转和控制旋转之间的旋转｡

86
00:07:18,560 --> 00:07:22,640
‫我们这样做的方法是, 我将断开AM音高｡

87
00:07:22,940 --> 00:07:28,730
‫断开该链接, 右键单击并重新组合结构体引脚, 我想在这两个引脚之间创建一个Delta,

88
00:07:28,730 --> 00:07:33,470
‫这样我就可以取消控制旋转并查找Delta｡

89
00:07:34,240 --> 00:07:41,280
‫Delta基本上是旋转体之间减法的一种奇特的表达方式｡

90
00:07:41,290 --> 00:07:50,830
‫所以我们要做的是, 用控制旋转减去基本旋转, 这就是演员旋转.

91
00:07:50,830 --> 00:07:55,930
‫这就是B, 如果你把鼠标悬停在上面, 就会得到A减去B, 这就是Delta旋转器的作用.

92
00:07:56,050 --> 00:08:01,660
‫我们基本上想说的是, 是的, 我想要控制旋转,

93
00:08:01,660 --> 00:08:03,610
‫但是拿走所有关于我们主动旋转的信息｡

94
00:08:03,610 --> 00:08:10,960
‫所以我可以知道我们的目标是向上还是向下, 相对于角色面对的方向｡

95
00:08:11,110 --> 00:08:20,170
‫然后如果我把返回值引脚从中分离出来, 并使用那里的间距, 我们会看到一切都如预期的那样工作｡

96
00:08:20,170 --> 00:08:26,950
‫当我向上看我的名字, 当我向下看, 我瞄准了向下, 不管我在世界上面对哪个方向,

97
00:08:26,950 --> 00:08:29,440
‫总是这样｡

98
00:08:29,440 --> 00:08:33,220
‫我们的瞄准旋转就快完成了｡

99
00:08:33,220 --> 00:08:38,350
‫唯一的问题是, 目前我们的眼睛无法像这样瞄准｡

100
00:08:38,350 --> 00:08:49,420
‫所以如果我去把一个射手角色放在楼梯上然后我们过去试着把他追下来, 试着让他过来找我们｡

101
00:08:49,420 --> 00:08:50,500
‫他来了

102
00:08:50,500 --> 00:08:53,350
‫你可以看到他正朝墙上开枪｡

103
00:08:53,350 --> 00:08:56,200
‫他根本不想瞄准, 这有点可悲｡

104
00:08:56,200 --> 00:08:57,670
‫那到底是怎么回事？

105
00:08:57,670 --> 00:09:04,120
‫如果我们转到眼睛和行为树, 你可以看到我们正在将默认焦点设置到一个位置｡

106
00:09:04,120 --> 00:09:10,210
‫在默认情况下, 如果你把焦点设置在一个位置, 那么虚幻不会以同样的方式更新你的控制旋转,

107
00:09:10,210 --> 00:09:13,540
‫它不会做俯仰｡

108
00:09:13,720 --> 00:09:15,100
‫所以这有点可悲｡

109
00:09:15,100 --> 00:09:23,680
‫好了, 我们要做的就是在黑板上把这个参与者的位置改成一个参与者的引用.

110
00:09:24,060 --> 00:09:27,790
‫然后我们需要把这个向量变成一个对象｡

111
00:09:27,790 --> 00:09:33,430
‫现在我们得到的是一个黑板键给播放器, 它是一个对象, 如果我们愿意, 我们可以把基类改成b

112
00:09:33,430 --> 00:09:38,860
‫actor, 尽管这不是特别重要｡

113
00:09:38,860 --> 00:09:44,620
‫这就意味着在行为树中, 我们可以切换到角色位置, 而不是玩家位置,

114
00:09:44,620 --> 00:09:49,570
‫而是演员位置.

115
00:09:49,570 --> 00:09:55,330
‫我们可以将焦点设置为播放器演员并更新播放器｡

116
00:09:55,330 --> 00:10:00,400
‫场景的位置现在也需要指向一个玩家演员｡

117
00:10:00,400 --> 00:10:08,260
‫现在, 这还不起作用, 因为我们的更新场景的播放器位置当前正在尝试设置一个位置到这个键中｡

118
00:10:08,260 --> 00:10:11,050
‫所以给你一个小小的挑战, 看看你能不能更新它｡

119
00:10:11,050 --> 00:10:19,720
‫因此, 我们不是在行为树服务中设置位置, 而是设置实际的演员暂停视频, 然后开始｡

120
00:10:19,750 --> 00:10:20,650
‫好的欢迎回来｡

121
00:10:20,650 --> 00:10:25,810
‫因此, 我们将转到Visual Studio代码, 并特别查找我们的服务｡

122
00:10:25,810 --> 00:10:29,650
‫它是服务下划线的球员位置, 如果看到｡

123
00:10:29,800 --> 00:10:37,090
‫我们要把它改成, 而不是把值设为向量, 而是把值设为对象, 就这么简单｡

124
00:10:37,090 --> 00:10:42,190
‫黑板上有类型的选择, 这就是我们要讲的｡

125
00:10:42,220 --> 00:10:46,360
‫很明显, 它会抱怨我们试图设置的是一个向量而不是一个对象｡

126
00:10:46,360 --> 00:10:51,280
‫我们只需要移除get actor位置并传入player pawn.

127
00:10:51,280 --> 00:10:56,860
‫相反, 清除值与之前相同, 所以我们可以返回编辑器,

128
00:10:56,890 --> 00:11:03,340
‫点击, 编译, 看看这个新的设置是否与I Kate一起工作, 让我们潜水在点击播放｡

129
00:11:03,370 --> 00:11:05,800
‫去楼上找我｡

130
00:11:06,590 --> 00:11:13,250
‫让他们试着来, 往下看, 来吧,

131
00:11:13,250 --> 00:11:19,820
‫我还有一件事, 我忘记了从行为树更新是可以看到的球员在这一刻是已经去重置黑板键到自我演员, 我们想成为球员基本上是球员设置让我们去,

132
00:11:19,820 --> 00:11:26,600
‫并作出改变, 因为在这一刻, 我不是来追我们,

133
00:11:26,600 --> 00:11:31,700
‫现在它在追我们, 事实上, 如果你跳,

134
00:11:31,730 --> 00:11:36,050
‫你可以看到这个家伙的瞄准旋转在改变｡

135
00:11:36,050 --> 00:11:40,550
‫我们到楼梯那边去, 看看他能不能从楼梯上朝我们开枪｡

136
00:11:41,030 --> 00:11:41,690
‫好极了｡

137
00:11:41,690 --> 00:11:46,130
‫他改变了他的轮换阵容, 事实上他正向我们射击｡

138
00:11:46,130 --> 00:11:47,300
‫他们两人都在哪里？

139
00:11:47,300 --> 00:11:49,250
‫所以我正在失去健康, 很快就会死去｡

140
00:11:50,600 --> 00:11:57,080
‫好了, 这节课到此为止, 我们增加了瞄准偏移量, 我们更新了眼睛,

141
00:11:57,080 --> 00:11:59,150
‫这样它也可以用它来瞄准｡

142
00:11:59,180 --> 00:12:03,410
‫下节课我们会讲一些关于在空中奔跑的有趣的东西.

143
00:12:03,410 --> 00:12:04,370
‫我会在那里见到你的｡

