﻿1
00:00:04,410 --> 00:00:04,750
‫你好, 我是

2
00:00:04,780 --> 00:00:05,160
‫欢迎光临｡

3
00:00:05,160 --> 00:00:09,090
‫在这节课中, 我们将加入控制器移动, 这样我们就可以使用控制器移动,

4
00:00:09,090 --> 00:00:12,030
‫这就是你们现在看到的.

5
00:00:12,060 --> 00:00:19,500
‫我将使用一组不同的坐标轴来表示上查率和右查率, 我们将看到为什么这是必要的｡

6
00:00:19,500 --> 00:00:21,300
‫让我们深入了解一下原因｡

7
00:00:23,140 --> 00:00:26,410
‫所以我希望能够使用控制器在场景中移动｡

8
00:00:26,410 --> 00:00:30,520
‫我已经可以在不处于播放模式时执行此操作｡

9
00:00:30,760 --> 00:00:36,340
‫所以我们希望能够做同样的运动, 用右摇杆平移,

10
00:00:36,340 --> 00:00:40,840
‫用左摇杆左右移动.

11
00:00:41,050 --> 00:00:42,820
‫而且我们还可以上下走｡

12
00:00:43,060 --> 00:00:47,340
‫但我们的对手不可能做到这一点, 因为它不是一个会飞的棋子｡

13
00:00:47,350 --> 00:00:53,340
‫所以我们要做的是, 首先, 绘制运动图很容易｡

14
00:00:53,350 --> 00:00:59,920
‫我们所要做的就是进入项目设置, 进入输入所在的位置, 引擎输入, 我们有前进轴,

15
00:00:59,920 --> 00:01:03,640
‫也有向右移动轴｡

16
00:01:03,640 --> 00:01:11,770
‫这很简单, 再加上一个映射, W和S, 我们可以在游戏手柄上加上｡

17
00:01:11,800 --> 00:01:17,380
‫如果我们看一下游戏手柄下面, 你可以看到左边的拇指, 我们想要的y轴向前移动｡

18
00:01:17,380 --> 00:01:24,190
‫对于向右移动, 我们要再加一次手柄, 手柄还是左摇杆.

19
00:01:24,190 --> 00:01:29,140
‫但这次我们在x轴和y轴上, 我们可以看看这是不是正确的运动｡

20
00:01:29,140 --> 00:01:31,330
‫所以请按播放键｡

21
00:01:31,360 --> 00:01:33,250
‫我使用alt p作为快捷方式｡

22
00:01:33,250 --> 00:01:37,570
‫然后左和右向前工作, 向后工作, 正如我们所期望的｡

23
00:01:37,570 --> 00:01:41,740
‫但显然转弯不起作用, 因为我们还没有绘制它｡

24
00:01:41,740 --> 00:01:43,000
‫所以让我们来试试｡

25
00:01:43,000 --> 00:01:48,790
‫如果我们再次进入设置､ 项目设置和输入, 让我们看一下, 向上看｡

26
00:01:48,790 --> 00:01:50,350
‫我们目前使用鼠标y｡

27
00:01:50,380 --> 00:01:53,380
‫只是在这里添加会有什么问题？

28
00:01:53,380 --> 00:01:58,330
‫比如说, 游戏手柄, 右摇杆, 这次是y轴？

29
00:01:58,630 --> 00:02:02,440
‫好吧, 第一次尝试我们可以去玩一玩｡

30
00:02:02,470 --> 00:02:04,930
‫这看起来还不错｡

31
00:02:04,930 --> 00:02:07,510
‫所以我们走进去, 你可以看到我们可以四处移动｡

32
00:02:07,510 --> 00:02:07,960
‫好的, 当然｡

33
00:02:07,960 --> 00:02:10,630
‫有点快, 但还可以, 不是吗？

34
00:02:10,660 --> 00:02:11,880
‫这样不好吗？

35
00:02:11,890 --> 00:02:13,690
‫嗯, 也不尽然｡

36
00:02:15,200 --> 00:02:20,810
‫原因最终归结为帧速率和这些轴的工作方式｡

37
00:02:21,380 --> 00:02:27,860
‫当我们以每秒30帧的速度运行游戏时, 鼠标会发生什么呢？当我们以均匀的速度在屏幕上从左到右移动鼠标时,

38
00:02:27,860 --> 00:02:36,560
‫我们可能会看到坐标轴的值是10, 然后是10, 然后是10｡

39
00:02:36,560 --> 00:02:44,420
‫这告诉我们每次鼠标向右移动十个单位, 每一帧都是一样的｡

40
00:02:45,080 --> 00:02:47,890
‫如果我们将帧速率加倍会发生什么？

41
00:02:47,900 --> 00:02:54,170
‫突然间鼠标仍然以相同的速度移动因为玩家仍然以相同的速度移动他们的手｡

42
00:02:54,170 --> 00:02:59,840
‫但是, 由于我们更频繁地显示帧,

43
00:02:59,840 --> 00:03:06,290
‫我们也更频繁地显示分笔成交点, 因此, 每次我们得到5/5或5/5时, 来自坐标轴的输入实际上会减半｡

44
00:03:06,650 --> 00:03:12,710
‫太好了, 这很好, 因为这意味着我们仍然会以相同的速度在屏幕上平移,

45
00:03:12,710 --> 00:03:18,200
‫不管我们有一台快的电脑还是一台慢的电脑｡

46
00:03:18,470 --> 00:03:25,580
‫如果我们移动鼠标一定的距离, 你会注意到同样的移动量, 这就是我们想要的｡

47
00:03:25,610 --> 00:03:31,940
‫现在, 当我们查看控制器时, 情况会发生一些变化, 比如说,

48
00:03:31,940 --> 00:03:36,380
‫我们使用模拟控制器向右全速运行, 速度为每秒30帧｡

49
00:03:36,380 --> 00:03:38,780
‫我们得到一个, 然后一个, 然后一个｡

50
00:03:38,780 --> 00:03:39,950
‫有道理, 对吧？

51
00:03:40,250 --> 00:03:42,380
‫如果是每秒60帧呢？

52
00:03:42,410 --> 00:03:44,720
‫我们还是有一个, 然后一个, 然后一个, 然后一个｡

53
00:03:44,720 --> 00:03:47,360
‫但我们得到更多的照片是因为我们得到了更多的画面｡

54
00:03:47,570 --> 00:03:54,920
‫如果你直接用它来影响棋子的移动, 你会看到它以两倍的速度移动, 两倍的帧速率,

55
00:03:54,920 --> 00:03:59,390
‫而不是我们想要的｡

56
00:03:59,390 --> 00:04:03,740
‫我们要做的是在这里引入一些帧速率独立性｡

57
00:04:03,980 --> 00:04:09,650
‫因此, 要做到这一点, 我们需要能够乘以增量时间｡

58
00:04:09,650 --> 00:04:15,560
‫我们希望使用输入轴来帮助我们调整旋转速度｡

59
00:04:16,160 --> 00:04:18,350
‫所以这是一个小的接受在那里｡

60
00:04:18,350 --> 00:04:22,850
‫但我的意思是, 我们需要一个旋转速率变量｡

61
00:04:22,850 --> 00:04:29,300
‫我们将为此创建一个新属性, 它将是一个编辑位置, 我们将使其成为一个浮点数,

62
00:04:29,300 --> 00:04:34,820
‫它将是旋转速率｡

63
00:04:34,820 --> 00:04:40,160
‫现在, 我将使用相同的旋转速率, 用于向上､ 向左和向右｡

64
00:04:40,160 --> 00:04:43,130
‫您可以继续, 并为这两个变量设置单独的变量｡

65
00:04:43,130 --> 00:04:46,460
‫我真的不知道什么是好的旋转率｡

66
00:04:46,460 --> 00:04:48,400
‫我只是要给予一个飞行气体巫术｡

67
00:04:48,410 --> 00:04:53,330
‫我不确定这里涉及的单位是多少, 所以我就说十｡

68
00:04:53,330 --> 00:04:54,020
‫但我们会看到的｡

69
00:04:54,020 --> 00:04:55,610
‫也许这太快了｡

70
00:04:55,610 --> 00:04:56,750
‫也许这太慢了｡

71
00:04:56,750 --> 00:05:01,760
‫我们可以在我们的蓝图中调整它, 这样我们就可以继续并保存它｡

72
00:05:01,760 --> 00:05:07,400
‫我将转到C++, 顺便说一下, 切换到C++,

73
00:05:07,400 --> 00:05:11,300
‫我们将需要一个新的坐标轴类型, 这样我们就可以区分不同的移动｡

74
00:05:11,300 --> 00:05:15,020
‫右, 鼠标, 直接移动和移动｡

75
00:05:15,020 --> 00:05:15,440
‫对不对？

76
00:05:15,440 --> 00:05:16,550
‫或者说, 抱歉, 那表情｡

77
00:05:16,550 --> 00:05:18,860
‫对, 就是这个价｡

78
00:05:19,370 --> 00:05:27,740
‫所以我们要通过进入项目设置来完成, 而不是将这个游戏手柄的左拇指映射到移动｡

79
00:05:27,740 --> 00:05:31,880
‫对, 抱歉, 不是左拇指, 而是右拇指映射为向上看｡

80
00:05:31,880 --> 00:05:38,870
‫我一直在犯这个错误, 从那个轴上删除它, 然后添加一个新的轴, 这将是外观｡

81
00:05:39,920 --> 00:05:40,550
‫起来｡

82
00:05:40,970 --> 00:05:41,770
‫好吧, 我知道了

83
00:05:42,110 --> 00:05:45,680
‫这是用来装游戏手柄的, 对吧？

84
00:05:45,680 --> 00:05:47,420
‫游戏手柄, 对吧｡

85
00:05:47,720 --> 00:05:53,780
‫Y轴, 因为这是一个查找, 我们说正的应该是我们正在使用的那个｡

86
00:05:54,200 --> 00:06:00,230
‫因此, 我们可以做的是, 我们需要映射它, 而不想将它直接映射到广告控制器｡

87
00:06:00,230 --> 00:06:05,900
‫因为我们需要做一些数学计算来计算速率, 并使这些速率与帧速率无关｡

88
00:06:05,900 --> 00:06:12,950
‫我们要做的就是, 到alt 0, 然后创建一个查找表, 我们已经很方便地找到了.

89
00:06:12,950 --> 00:06:19,010
‫我将把它创建为向右看, 然后继续创建这个控制转移｡

90
00:06:19,010 --> 00:06:22,210
‫P我使用的是我的实现插件｡

91
00:06:22,220 --> 00:06:25,730
‫让我们继续执行查找速率实现｡

92
00:06:26,630 --> 00:06:27,950
‫收到一个轴值｡

93
00:06:27,950 --> 00:06:28,640
‫那太好了｡

94
00:06:28,640 --> 00:06:34,100
‫然后, 我们要确保这就是我们在设置播放器输入组件中调用的内容｡

95
00:06:34,100 --> 00:06:37,010
‫所以我们在这里创建一个新行, 复制外观｡

96
00:06:37,010 --> 00:06:38,780
‫好吧, 我把它叫做向上看｡

97
00:06:38,780 --> 00:06:42,920
‫对, 像这样然后复制粘贴｡

98
00:06:43,670 --> 00:06:49,040
‫完全限定引用函数来调用我们的查找率｡

99
00:06:49,790 --> 00:06:56,570
‫那么我们在一天结束时要调用的就是add controller input, pitch, controller, pitch

100
00:06:56,570 --> 00:06:57,950
‫input.

101
00:06:58,460 --> 00:07:00,860
‫但我们想把它乘以几个因素｡

102
00:07:00,860 --> 00:07:04,580
‫所以我们的访问值是0到1之间的一个值｡

103
00:07:04,940 --> 00:07:12,020
‫如果我们把so轴的值乘以旋转速率｡

104
00:07:12,870 --> 00:07:17,610
‫然后我们得到的是速度, 但我们想要的是距离.

105
00:07:17,610 --> 00:07:20,700
‫就像我们移动鼠标时, 每一帧都移动一定的距离｡

106
00:07:20,700 --> 00:07:22,050
‫这就是进来的东西

107
00:07:22,050 --> 00:07:24,630
‫我们想把这个速度转换成距离｡

108
00:07:24,630 --> 00:07:30,750
‫如果你还记得一些方法, 一些模糊的数学课, 从速度到距离,

109
00:07:30,750 --> 00:07:32,850
‫我们需要乘以时间｡

110
00:07:32,850 --> 00:07:37,620
‫所以我们通过从世界上获取Delta秒来实现这一点｡

111
00:07:37,620 --> 00:07:39,540
‫什么是Delta秒？

112
00:07:39,540 --> 00:07:43,050
‫这是最后一帧所用的时间｡

113
00:07:43,050 --> 00:07:45,600
‫所以它和帧速率正好相反｡

114
00:07:45,600 --> 00:07:51,900
‫它告诉我们一帧需要多长时间, 这很好, 因为这是我们需要应用此移动的时间｡

115
00:07:51,900 --> 00:07:57,840
‫所以如果你想一想, 我们有一个速度, 我们有一段时间, 我们需要把这个速度应用到过去｡

116
00:07:57,870 --> 00:08:03,990
‫它给我们一个移动量, 我们本质上想应用到我们的控制器俯仰输入｡

117
00:08:03,990 --> 00:08:05,040
‫所以这就是我们想要的｡

118
00:08:05,070 --> 00:08:11,130
‫首先, 因为我们想要得到的水平, 我们会得到我们周围的世界｡

119
00:08:11,130 --> 00:08:20,310
‫然后我们使用箭头函数来得到Delta seconds, 它告诉我们我们想要得到上一帧经过的时间,

120
00:08:20,310 --> 00:08:28,470
‫它再次给出了当前时刻帧速率的近似值｡

121
00:08:28,470 --> 00:08:34,260
‫现在你可能想知道为什么我们没有对移动输入做同样的处理, 原因是移动输入,

122
00:08:34,260 --> 00:08:42,900
‫当你在那里做广告输入时, 它已经假设了这是一个速率, 而不是一个实际的移动量｡

123
00:08:42,900 --> 00:08:49,200
‫所以它已经在为我们做这个计算了, 基本上是在引擎盖下, 保存, 进入虚幻世界,

124
00:08:49,200 --> 00:08:53,610
‫编译, 看看是否值得｡

125
00:08:55,390 --> 00:09:01,420
‫让我们开始游戏, 我将尝试使用控制器输入｡

126
00:09:01,450 --> 00:09:02,020
‫我们走吧｡

127
00:09:02,050 --> 00:09:04,840
‫我们上下移动得相当慢｡

128
00:09:04,960 --> 00:09:10,900
‫但希望这将是完全独立的帧速率, 因为我们已经使用了增量时间｡

129
00:09:11,650 --> 00:09:18,530
‫因此, 我希望你们继续实施外观正确率｡

130
00:09:18,550 --> 00:09:25,000
‫因此, 重复相同的方法设置为寻找正确的, 因为他没有为寻找向上和调整速度, 使它不会去真的很慢,

131
00:09:25,000 --> 00:09:30,910
‫你可以实际上使用它来移动周围的水平, 暂停视频, 并有一个去｡

132
00:09:32,400 --> 00:09:32,850
‫好吧, 我会的

133
00:09:32,850 --> 00:09:33,600
‫欢迎回来｡

134
00:09:33,630 --> 00:09:39,070
‫第一步是在项目设置中创建一个新的轴映射｡

135
00:09:39,070 --> 00:09:42,840
‫我们得再做一次, 这次是为了造型｡

136
00:09:42,840 --> 00:09:43,500
‫对不对？

137
00:09:43,500 --> 00:09:44,310
‫好吧, 我知道了

138
00:09:44,340 --> 00:09:46,010
‫像是那么满嘴什么话｡

139
00:09:46,020 --> 00:09:49,620
‫然后我们去拿游戏手柄｡

140
00:09:50,300 --> 00:09:54,440
‫这次右边和x轴, 就是我们要绘制的｡

141
00:09:55,310 --> 00:09:59,960
‫然后我们将转到shooter头文件｡

142
00:10:00,320 --> 00:10:02,870
‫我们将复制查找速率｡

143
00:10:03,060 --> 00:10:07,390
‫让我给你们看一下文件, 这样你们就可以看到我在左手的位置｡

144
00:10:07,400 --> 00:10:12,110
‫所以我们将不再使用查找速率,

145
00:10:12,110 --> 00:10:19,640
‫而是使用向右查找速率控制, 移位, p, 创建实现,

146
00:10:19,640 --> 00:10:26,150
‫我们将使用几乎完全相同的代码, 使用相同的乘法, 再次将速度转换为移动距离｡

147
00:10:26,810 --> 00:10:27,320
‫就是这个表情｡

148
00:10:27,320 --> 00:10:27,920
‫好吧, 好吧｡

149
00:10:27,920 --> 00:10:34,940
‫因此, 这次我们需要执行您的输入,

150
00:10:34,940 --> 00:10:43,990
‫而不是添加控制器音高, 并且需要从我们的设置播放器输入组件调用正确的注视率, 或者需要在实际操作轴时调用正确注视率｡

151
00:10:44,000 --> 00:10:47,620
‫所以我们要在这里添加另一个轴, 而不是查找速率｡

152
00:10:47,630 --> 00:10:49,910
‫这将是看起来正确的利率｡

153
00:10:50,240 --> 00:10:59,180
‫然后我们要复制对函数的引用, 记住前面的&符号, 然后是完全限定的字符.

154
00:10:59,180 --> 00:10:59,480
‫结肠｡

155
00:10:59,480 --> 00:11:01,610
‫结肠, 看右率｡

156
00:11:01,610 --> 00:11:04,070
‫让我们继续并保存该文件和文件头｡

157
00:11:04,100 --> 00:11:11,030
‫返回到项目并退出播放, 我离开这里, 然后点击编译｡

158
00:11:11,810 --> 00:11:15,470
‫我们应该可以跳进去玩一玩｡

159
00:11:15,470 --> 00:11:16,100
‫是这样｡

160
00:11:16,190 --> 00:11:19,410
‫上下是慢慢工作的, 左右也是｡

161
00:11:20,090 --> 00:11:23,120
‫和我预期的不太一样｡

162
00:11:23,150 --> 00:11:24,890
‫让我们检查一下项目设置｡

163
00:11:24,890 --> 00:11:25,640
‫所以我们看｡

164
00:11:25,640 --> 00:11:26,450
‫好吧, 我知道了

165
00:11:26,450 --> 00:11:27,350
‫看起来还行｡

166
00:11:27,740 --> 00:11:28,520
‫拇指操纵杆向右｡

167
00:11:28,520 --> 00:11:29,640
‫拇指杆x轴｡

168
00:11:29,660 --> 00:11:30,800
‫让我们检查一下｡

169
00:11:30,800 --> 00:11:35,140
‫这就是C++正确绑定轴的全部内容｡

170
00:11:35,150 --> 00:11:36,340
‫好吧, 好吧｡

171
00:11:36,350 --> 00:11:42,980
‫这是调用看起来正确的比率函数或接缝, 以调用您的输入, 因为它应该是｡

172
00:11:44,710 --> 00:11:45,810
‫丹娜, 发生什么事了？

173
00:11:45,820 --> 00:11:48,550
‫我只是再次点击recompile, 然后再次点击play｡

174
00:11:48,550 --> 00:11:49,600
‫有时候你不得不这么做｡

175
00:11:49,600 --> 00:11:56,350
‫但是现在左顾右盼是在上下工作, 尽管速度非常非常慢｡

176
00:11:56,350 --> 00:11:59,890
‫所以我们要调整一下角色蓝图｡

177
00:11:59,890 --> 00:12:02,440
‫我们去找副总统枪手吧｡

178
00:12:02,470 --> 00:12:03,820
‫打开他的蓝图｡

179
00:12:04,500 --> 00:12:11,250
‫然后我们向下滚动, 找到旋转速率, 我会把它乘以10.

180
00:12:11,400 --> 00:12:16,070
‫试着加快10倍, 然后我们会找到一个介于两者之间的值｡

181
00:12:16,080 --> 00:12:21,190
‫这是一种可以尝试找到值的方法, 就是先改变数量级｡

182
00:12:21,210 --> 00:12:23,990
‫嗯, 这是更接近在正确的球场｡

183
00:12:24,000 --> 00:12:29,850
‫这可能有点太敏感了, 所以我可能会把它降低一半｡

184
00:12:30,090 --> 00:12:32,250
‫这次试试50个｡

185
00:12:32,250 --> 00:12:33,750
‫不是500, 而是50｡

186
00:12:33,780 --> 00:12:35,020
‫我们试试看｡

187
00:12:35,040 --> 00:12:38,970
‫按播放键, 然后移动我的摇杆｡

188
00:12:39,330 --> 00:12:41,190
‫那感觉自然多了｡

189
00:12:41,220 --> 00:12:44,160
‫你可能想去一个介于两者之间的地方｡

190
00:12:44,190 --> 00:12:45,920
‫那就从两个人中间进去｡

191
00:12:45,930 --> 00:12:51,750
‫再说一次, 这次我会说大约70, 而不是一直到170可能是正确的利率｡

192
00:12:51,750 --> 00:12:53,730
‫让我们看看我们是否找到了黄金｡

193
00:12:53,730 --> 00:12:54,810
‫是的, 我想是的｡

194
00:12:54,810 --> 00:12:57,290
‫我想70美元对我来说是合适的利率｡

195
00:12:57,300 --> 00:13:04,650
‫显然, 这是那种经常游戏允许你调整或者允许玩家在设置中调整的东西｡

196
00:13:04,650 --> 00:13:06,210
‫我们不会去调查的｡

197
00:13:06,210 --> 00:13:14,070
‫这超出了本节的范围, 但您可能希望在自己的游戏中向用户公开这一点｡

198
00:13:14,880 --> 00:13:15,210
‫好的, 谢谢

199
00:13:15,210 --> 00:13:19,650
‫在那堂课上, 我们已经看到了控制器输入和鼠标输入的区别,

200
00:13:19,650 --> 00:13:22,770
‫以及我们如何处理速率而不是绝对运动｡

201
00:13:22,950 --> 00:13:28,930
‫所以在下一节课中, 我们会看看我一直暗示的第三人称摄像机｡

202
00:13:28,950 --> 00:13:29,760
‫到时候见｡

