﻿1
00:00:04,390 --> 00:00:05,560
‫你好, 欢迎｡

2
00:00:05,560 --> 00:00:11,230
‫在这节课上, 我们将制作旋转和移动的平台｡

3
00:00:11,230 --> 00:00:20,950
‫我们将通过学习C++中的F旋转器类型来完成这个任务, 这样我们就可以在我们的谜题中添加更多的元素｡

4
00:00:20,950 --> 00:00:23,950
‫让我们深入了解一下它是如何工作的｡

5
00:00:24,280 --> 00:00:28,300
‫现在我们来谈谈如何填写旋转平台函数｡

6
00:00:28,510 --> 00:00:35,350
‫旋转的方式和我们定位的方式非常相似, 我们有非常相似的功能｡

7
00:00:35,350 --> 00:00:43,240
‫我们可以调用而不是调用, 得到演员位置, 我们可以调用, 得到演员旋转｡

8
00:00:43,240 --> 00:00:49,270
‫如果我在这一行的末尾加上括号,

9
00:00:49,270 --> 00:00:55,630
‫然后将鼠标悬停在函数上, Visual Studio智能感知会告诉我们返回的值是一个F旋转器｡

10
00:00:55,630 --> 00:01:02,830
‫我们在处理位置时使用了F向量, 并且在前面的部分中讨论了旋转子｡

11
00:01:02,830 --> 00:01:07,090
‫我们来看看把这个F旋转器放到一个局部变量中｡

12
00:01:07,090 --> 00:01:14,920
‫所以类型是F旋转器, 我们称之为当前旋转, 等于获取演员旋转,

13
00:01:14,920 --> 00:01:17,680
‫在行尾放一个分号.

14
00:01:17,680 --> 00:01:20,260
‫我还将删除log语句, 因为我们不再需要它｡

15
00:01:20,260 --> 00:01:25,450
‫然后我们要做的,

16
00:01:25,450 --> 00:01:31,810
‫基本上和我们对平台速度所做的完全一样, 它是一种旋转速度乘以时间增量, 再加上当前的旋转｡

17
00:01:31,810 --> 00:01:35,470
‫那么旋转速度应该是多少呢？

18
00:01:35,470 --> 00:01:39,520
‫好了, 这就是我们要转到头文件并添加一个新的U属性的地方｡

19
00:01:39,520 --> 00:01:48,760
‫我将把它添加到移动距离下面, 然后在任何地方编辑U属性,

20
00:01:49,300 --> 00:02:00,100
‫然后给予它一个类别, 这个时候我将称之为旋转, 我将把类别名称从移动平台更改为移动｡

21
00:02:00,100 --> 00:02:03,850
‫所以我们将有一个移动的类别, 一个旋转的类别｡

22
00:02:03,850 --> 00:02:11,800
‫在这个属性下面, 我们将放置一个F旋转器, 称为旋转速度, 这里我们不会给予它一个默认值,

23
00:02:11,800 --> 00:02:16,780
‫因为默认情况下, 我不希望任何平台旋转｡

24
00:02:16,780 --> 00:02:21,190
‫所以默认值是000, 这正是我们所需要的｡

25
00:02:21,280 --> 00:02:26,470
‫所以我会在行尾放一个分号, 现在我们可以回到C++文件,

26
00:02:26,470 --> 00:02:31,330
‫在rotate平台函数中使用这个成员变量.

27
00:02:31,330 --> 00:02:46,750
‫我们要做的是, 当前旋转等于当前旋转加上旋转速度乘以Delta时间, 并在行尾加上分号｡

28
00:02:46,900 --> 00:02:52,660
‫现在最后一块拼图是让我们的演员适应新的旋转｡

29
00:02:52,660 --> 00:03:00,130
‫所以正如你所料, 也许对你来说有一个小小的挑战, 事实上, 你会如何自己去做？

30
00:03:01,970 --> 00:03:10,430
‫我们要用的是集合参与者旋转函数, 我们要传递一个当前旋转的参数, 像这样,

31
00:03:10,430 --> 00:03:14,930
‫然后在行尾放一个分号.

32
00:03:14,960 --> 00:03:19,160
‫不幸的是, 它的工作原理并不像这样简单｡

33
00:03:19,310 --> 00:03:22,190
‫这引起了我的注意, 一些学生在助教中指出｡

34
00:03:22,190 --> 00:03:27,920
‫丹, 非常感谢你, 他指出,

35
00:03:27,920 --> 00:03:32,710
‫像这样把旋转加在一起并不总是有效的, 因为旋转本身会有一些复杂性｡

36
00:03:32,720 --> 00:03:41,070
‫如果你一直旋转到-90度, 在某个点上你需要翻转到+90度, 等等｡

37
00:03:41,090 --> 00:03:50,540
‫因此, 解决此问题的更好方法是调用添加演员局部旋转, 而不是设置活动旋转｡

38
00:03:50,540 --> 00:03:57,830
‫您可以注意到, 这里还有一些添加演员的局部变换和用于位置的局部偏移｡

39
00:03:57,830 --> 00:04:00,920
‫所以你也可以用它来代替添加位置｡

40
00:04:00,920 --> 00:04:06,380
‫然而, 在旋转的边缘情况下, 我们不会遇到同样的问题｡

41
00:04:06,380 --> 00:04:12,800
‫所以我建议你在这里添加演员局部旋转,

42
00:04:12,800 --> 00:04:19,670
‫然后你只需输入旋转速度乘以Delta时间, 它就会自动为你完成剩下的代码｡

43
00:04:19,670 --> 00:04:22,100
‫所以我们可以直接把这些线去掉｡

44
00:04:22,100 --> 00:04:27,560
‫你已经得到了一个直接的局部旋转的附加值, 你也可以去掉这个, 得到当前的旋转,

45
00:04:27,560 --> 00:04:31,670
‫因为我们也不再需要它了｡

46
00:04:31,850 --> 00:04:35,450
‫因此, 让我们进入编辑器并单击compile按钮｡

47
00:04:35,450 --> 00:04:37,520
‫完成后, 关闭日志｡

48
00:04:37,640 --> 00:04:42,530
‫让我们选择一个平台的水平, 其中任何一个都将做, 并看看类别｡

49
00:04:42,530 --> 00:04:46,970
‫所以我们有运动, 有旋转, 还有旋转速度.

50
00:04:46,970 --> 00:04:54,890
‫所以我想让这个平台绕着Z轴旋转, 大概是每秒90度｡

51
00:04:54,890 --> 00:04:57,920
‫所以旋转一圈需要4秒钟｡

52
00:04:57,950 --> 00:04:59,990
‫我们继续按播放键｡

53
00:04:59,990 --> 00:05:00,620
‫就这样｡

54
00:05:00,620 --> 00:05:03,590
‫我们有一个旋转和移动的平台｡

55
00:05:03,590 --> 00:05:13,040
‫所以不像移动平台的机制, 我们不必担心我们的旋转平台实际上会前后移动｡

56
00:05:13,040 --> 00:05:16,310
‫如果你想让它做到这一点, 这是一个可能的扩展, 你可以想到｡

57
00:05:16,310 --> 00:05:23,420
‫但对我来说, 这就足够了, 因为我们只是希望这些东西继续沿着同一个方向一圈又一圈地旋转｡

58
00:05:23,630 --> 00:05:30,200
‫让我把旋转从这个平台上去掉, 因为我们不想让这个平台旋转｡

59
00:05:30,200 --> 00:05:37,640
‫所以我想挑战你做一个哔哔声旋转平台, 基本上是另一个变体, 供我们使用,

60
00:05:37,640 --> 00:05:40,220
‫并找到一个合适的网格｡

61
00:05:40,220 --> 00:05:45,980
‫我会选择一个模糊的圆形的东西, 这样它就可以作为一个旋转平台,

62
00:05:45,980 --> 00:05:54,380
‫给予它一个默认的旋转速度, 然后把它放在水平线上, 创造一个旋转平台的拼图, 让你穿过｡

63
00:05:54,380 --> 00:05:56,300
‫暂停视频, 开始体验｡

64
00:05:59,400 --> 00:05:59,700
‫好吧, 我会的

65
00:05:59,700 --> 00:06:00,660
‫欢迎回来｡

66
00:06:00,690 --> 00:06:08,610
‫接下来, 我们将进入内容抽屉, 查找C++类“Obstacle Assault”,

67
00:06:08,610 --> 00:06:14,270
‫然后右键单击移动平台, 创建一个由此派生的蓝图类设备｡

68
00:06:14,280 --> 00:06:23,430
‫我们将其命名为BP下划线旋转平台, 并将其放在内容路径中, 创建蓝图类｡

69
00:06:23,430 --> 00:06:27,180
‫编辑器弹出后, 让我们将其停靠到主窗口｡

70
00:06:27,180 --> 00:06:33,180
‫我将关闭似乎每次都要弹出的内容浏览器,

71
00:06:33,180 --> 00:06:39,390
‫然后转到我们的主级别, 右键单击即可进入包含所有测试资产的孤岛｡

72
00:06:40,260 --> 00:06:44,490
‫到这里来看看有没有好看的｡

73
00:06:44,490 --> 00:06:48,600
‫我喜欢这些平台的外观｡

74
00:06:48,600 --> 00:06:55,710
‫如果我右键单击它, 或者直接单击它, 则此处静态网格中使用的网格是SM平台A,

75
00:06:55,740 --> 00:06:59,760
‫让我们查找该平台｡

76
00:06:59,760 --> 00:07:07,620
‫让我们转到蓝图, 打开内容, 绘制, 转到全部, 然后搜索平台下划线M,

77
00:07:07,620 --> 00:07:14,710
‫下划线A, 然后我们就得到了网格, 就是这里的网格｡

78
00:07:15,270 --> 00:07:16,890
‫我是第二个｡

79
00:07:16,980 --> 00:07:21,480
‫我将把它拖到我们的视口中, 以获得我们的平台｡

80
00:07:21,480 --> 00:07:24,090
‫现在让我们看看它的中心位置｡

81
00:07:24,090 --> 00:07:25,860
‫是否居中？

82
00:07:25,860 --> 00:07:30,840
‫是的, 这很好也很重要, 因为我们确实需要它绕着中间旋转｡

83
00:07:30,840 --> 00:07:34,560
‫否则这个圆形平台看起来会有点奇怪｡

84
00:07:34,770 --> 00:07:43,680
‫我们还可以在x和Y维度上稍微放大一点, 使平台更大一些, 我们可以使用类默认值来删除任何平台速度,

85
00:07:43,680 --> 00:07:51,180
‫因为我们不希望它移动,

86
00:07:51,360 --> 00:08:01,440
‫并将移动距离设置为零, 然后查看旋转部分, 并将其设置为大约每秒90度, 这似乎相当合理｡

87
00:08:01,440 --> 00:08:04,050
‫所以让我们继续, 并保存这个旋转平台｡

88
00:08:04,170 --> 00:08:12,270
‫我们将进入我们的主要水平, 然后右键单击小浮岛, 我们有我们的水平设置我们的拼图, 点击,

89
00:08:12,270 --> 00:08:14,360
‫去这里｡

90
00:08:14,880 --> 00:08:21,930
‫然后在这个岛的上面, 我想放置我们的新蓝图｡

91
00:08:21,930 --> 00:08:28,410
‫所以, 让我们取消搜索, 转到内容的根, 找到我们的旋转平台, 并将其放置在水平｡

92
00:08:28,410 --> 00:08:31,050
‫我立刻意识到我真的想让它再大一点｡

93
00:08:31,200 --> 00:08:33,630
‫那么, 让我们继续扩大规模｡

94
00:08:33,630 --> 00:08:37,500
‫多几个单位, 也许三倍应该不错｡

95
00:08:37,500 --> 00:08:38,850
‫我们去看看吧｡

96
00:08:38,850 --> 00:08:44,940
‫现在, 我认为它还可以更大, 所以我将放大一点, 这样在X和Y方向上,

97
00:08:44,940 --> 00:08:48,630
‫它比原来大五倍｡

98
00:08:48,660 --> 00:08:54,330
‫好吧, 这是一个很好的宽旋转盘, 可能是相当具有挑战性的, 我们要通过｡

99
00:08:54,330 --> 00:09:02,190
‫我将使用alt键复制这些内容, 并在整个平台上拖动几个内容, 尝试将它们放置在适当的位置,

100
00:09:02,190 --> 00:09:07,860
‫然后再使用alt键拖动几个内容｡

101
00:09:08,550 --> 00:09:14,320
‫所以我们有了一组很好的谜题, 让我们试着去解开｡

102
00:09:14,340 --> 00:09:18,570
‫所以只是摆动他们周围一点, 直到我可以让他们几乎边缘到边缘｡

103
00:09:18,570 --> 00:09:24,540
‫这里是能够有一个游戏模式真的很有帮助, 因为我们可以右键点击附近的平台和点击播放从这里, 这里是我们所有的旋转平台,

104
00:09:24,540 --> 00:09:30,450
‫我们踩｡

105
00:09:30,450 --> 00:09:37,620
‫现在对我们来说, 找到一条轻松穿过这些移动平台的路是一个小挑战｡

106
00:09:37,620 --> 00:09:41,370
‫中间有一个死区,

107
00:09:41,370 --> 00:09:48,930
‫我们可以试着把它清空, 但实际上很难进入死区, 所以我不打算在那里放任何东西来阻止它.

108
00:09:49,350 --> 00:09:50,280
‫但你可以看到你去那里｡

109
00:09:50,280 --> 00:09:55,080
‫这是一个我们可以克服的挑战, 但有点棘手, 这很有趣｡

110
00:09:55,080 --> 00:09:55,590
‫好东西｡

111
00:09:55,590 --> 00:10:01,270
‫在这节课上, 我们学习了如何制作旋转平台, 通过学习一种新的类型,

112
00:10:01,290 --> 00:10:05,940
‫F旋转器, 以及我们如何用它来设置演员的旋转｡

113
00:10:05,940 --> 00:10:07,530
‫我们下节课再见｡

