﻿1
00:00:04,130 --> 00:00:11,930
‫所以这段视频的目标是让抛射体真正在空中发射, 并表现出抛射体应有的行为｡

2
00:00:12,020 --> 00:00:13,520
‫欢迎回来

3
00:00:13,550 --> 00:00:19,430
‫在这段视频中, 我们关注的是如何让我们的抛射体像抛射体一样运动｡

4
00:00:19,610 --> 00:00:22,040
‫现在, 有不同的方法来处理这个问题｡

5
00:00:22,070 --> 00:00:28,220
‫一种方法是我们自己手动设置抛射体的位置和旋转｡

6
00:00:28,250 --> 00:00:34,940
‫现在, 这通常需要我们在每一帧都进行更新, 所以我们可能会把它放在tick函数中｡

7
00:00:35,210 --> 00:00:41,810
‫另一种方法是简单地给抛射体加上一个冲量, 让物理引擎来接管｡

8
00:00:41,900 --> 00:00:48,440
‫本质上, 我们施加一个力, 发射抛射体, 让重力发挥作用,

9
00:00:48,440 --> 00:00:51,380
‫抛射体就会飞向空中.

10
00:00:51,410 --> 00:00:55,310
‫现在, 另一种方法是使用移动组件｡

11
00:00:55,340 --> 00:01:00,560
‫现在, 这是一种特殊类型的组件, 我们将添加到我们的投射类中｡

12
00:01:00,560 --> 00:01:08,060
‫并且在运动组件上设置一些参数之后, 运动组件将处理演员的运动｡

13
00:01:08,090 --> 00:01:15,860
‫现在, 它只是碰巧, 虚幻引擎有一个内置的组件类型, 专门为炮弹｡

14
00:01:15,860 --> 00:01:20,210
‫因此, 这利用了虚幻引擎的一些内置功能｡

15
00:01:20,210 --> 00:01:27,020
‫通过这样做, 我们允许移动组件根据我们提供的设置为我们处理移动｡

16
00:01:27,020 --> 00:01:29,360
‫这就是我们要用的方法｡

17
00:01:29,360 --> 00:01:38,690
‫所以我们想在projectory类中添加一个projectory移动组件, 它将处理projectory对象的移动｡

18
00:01:38,690 --> 00:01:45,440
‫因此, 当我们在世界中产生投射物时,

19
00:01:45,440 --> 00:01:52,190
‫可以基于我们设置的投射物运动类上的变量来设置和定制属于投射物类的投射物运动组件｡

20
00:01:52,220 --> 00:01:58,340
‫现在我们要设置一些, 比如初始速度和最大速度,

21
00:01:58,340 --> 00:02:02,750
‫抛射体移动组件将实际移动抛射体.

22
00:02:02,780 --> 00:02:06,290
‫现在, 这里是虚幻引擎文档页面｡

23
00:02:06,290 --> 00:02:07,940
‫抛射体运动分量｡

24
00:02:07,940 --> 00:02:16,700
‫这是我们要关注的组件, 您会看到它显示“投射物移动组件”在其滴答声中更新另一个组件的位置｡

25
00:02:16,700 --> 00:02:19,340
‫默认情况下, 它将移动路径组件｡

26
00:02:19,370 --> 00:02:20,900
‫这是包含的内容｡

27
00:02:20,900 --> 00:02:26,810
‫如果你继续向下滚动, 你会看到一些可以在移动组件上设置的变量｡

28
00:02:26,810 --> 00:02:30,740
‫所以, 滚动浏览这个, 看看有什么选择｡

29
00:02:30,770 --> 00:02:36,770
‫现在, 我们向类中添加一个抛射体运动组件, 方法与添加任何其他组件的方法相同,

30
00:02:36,770 --> 00:02:39,350
‫这意味着您已经知道如何执行此操作｡

31
00:02:39,350 --> 00:02:45,980
‫因此, 您面临的挑战是进入projectile类, 添加一个projectile移动组件指针变量,

32
00:02:45,980 --> 00:02:49,310
‫并通过使其在任何位置可见来公开它｡

33
00:02:49,310 --> 00:02:54,140
‫这样我们就可以很容易地在蓝图中编辑投射物的运动分量｡

34
00:02:54,150 --> 00:02:59,560
‫现在你要在projectile构造函数中使用create default sub对象来构造它｡

35
00:02:59,570 --> 00:03:06,920
‫不要忘记包括适当的标题, 并设置抛射体运动组件的初始速度和最大速度变量｡

36
00:03:06,920 --> 00:03:12,650
‫现在为这些选择您自己的值, 并在构造函数中设置它们, 然后对游戏进行playtest｡

37
00:03:12,650 --> 00:03:19,790
‫你要调整初始速度和最大速度在细节面板中选择的组成部分, 在抛射体蓝图｡

38
00:03:19,790 --> 00:03:25,910
‫这会给予你一些调整参数和作为开发人员进行实验的经验｡

39
00:03:25,910 --> 00:03:30,080
‫现在暂停视频并创建抛射体移动组件｡

40
00:03:32,900 --> 00:03:33,180
‫好吧, 我会的

41
00:03:33,230 --> 00:03:39,380
‫所以我在这里的抛射体H, 你可能会添加你的组件在私人部分｡

42
00:03:39,380 --> 00:03:41,780
‫所以如果你做了, 你有正确的直觉｡

43
00:03:41,780 --> 00:03:43,730
‫我们要把它设为私有变量｡

44
00:03:43,730 --> 00:03:44,180
‫没关系, 我会的

45
00:03:44,180 --> 00:03:48,040
‫如果您没有, 您可以很容易地移动到私人部分, 如果你愿意｡

46
00:03:48,050 --> 00:03:54,560
‫现在, 这是一个U形抛射体的运动分量, 这是一个指针｡

47
00:03:54,560 --> 00:03:58,610
‫我们可以简单地称之为抛射体运动分量｡

48
00:03:58,760 --> 00:04:05,300
‫现在, 我将给予它一个U属性, 使它在任何地方都可见｡

49
00:04:06,020 --> 00:04:08,210
‫现在, 你可能给它一个类别｡

50
00:04:08,210 --> 00:04:13,130
‫如果不是, 那也没关系, 但我会给予它一个分类, 称之为运动｡

51
00:04:13,130 --> 00:04:15,650
‫所以我们有抛射体运动分量｡

52
00:04:15,650 --> 00:04:20,660
‫我将省略前向声明, 看看我是否可以在projectile CP中编译,

53
00:04:20,660 --> 00:04:24,290
‫我将包括头文件｡

54
00:04:24,290 --> 00:04:31,340
‫回到文档页面, 我将复制这个include, 并将其粘贴到projectile中｡

55
00:04:31,340 --> 00:04:34,250
‫现在我准备好构建我的组件了｡

56
00:04:34,250 --> 00:04:42,440
‫我将使用抛射体运动组件, 创建默认子对象,

57
00:04:42,440 --> 00:04:48,140
‫类型为抛射体运动组件.

58
00:04:48,470 --> 00:04:55,760
‫在课文中, 我将简单地把这个抛射体运动分量叫做｡

59
00:04:55,760 --> 00:04:59,300
‫这是我的分号, 我们有它｡

60
00:04:59,330 --> 00:05:07,850
‫现在, 我们将按照指示, 设置抛射体运动, 部件最大速度, 我将给予它一个初始速度, 比如说,

61
00:05:07,850 --> 00:05:14,810
‫1300 F｡ 这是我们将进行实验的东西, 通过播放测试,

62
00:05:14,810 --> 00:05:17,600
‫将其调整到正确的值｡

63
00:05:17,600 --> 00:05:25,490
‫现在我将设置抛射体运动分量的初始速度, 并将其设置为相同的值｡

64
00:05:25,910 --> 00:05:31,190
‫所以初始速度是指抛射体部件启动时的速度｡

65
00:05:31,190 --> 00:05:33,710
‫当然, 它永远不会超过最大速度｡

66
00:05:33,860 --> 00:05:35,750
‫让我们继续进行编译｡

67
00:05:36,050 --> 00:05:42,200
‫好的, 我得到了一个编译错误, 如果我打开它, 我会看到它引用了projectile h｡

68
00:05:42,350 --> 00:05:47,240
‫让我们回到投射物H上面写着投射物H27｡

69
00:05:47,240 --> 00:05:51,020
‫它指的是第27行, 就是这一行.

70
00:05:51,140 --> 00:05:56,090
‫而我们得到的这个抛射体的运动分量并不是抛射体的一个成员｡

71
00:05:56,120 --> 00:05:59,990
‫请记住, 这是我们在没有前向声明时看到的错误类型｡

72
00:05:59,990 --> 00:06:07,400
‫所以我们可以很容易地用class关键字向前声明它, 然后再编译一次, 我们得到了一个成功的编译｡

73
00:06:07,400 --> 00:06:12,830
‫同样, 这也是我们了解默认情况下是否包含特定组件的方法｡

74
00:06:12,830 --> 00:06:17,270
‫我们看到, 这一个不是这样的一个成功的编译｡

75
00:06:17,270 --> 00:06:18,890
‫让我们跳回到编辑器中｡

76
00:06:19,280 --> 00:06:26,030
‫好的, 我回到编辑器, 我将进入蓝图和演员, 这是BFP投射体｡

77
00:06:26,300 --> 00:06:28,190
‫这里是NP抛射体｡

78
00:06:28,190 --> 00:06:32,090
‫现在我看到抛射体运动的分量在这里｡

79
00:06:32,390 --> 00:06:38,870
‫在“详细信息”面板中, 您可以看到“抛射体”下面有初始速度和最大速度, 您可以滚动查看,

80
00:06:38,870 --> 00:06:43,280
‫还可以设置许多其他参数｡

81
00:06:43,400 --> 00:06:44,840
‫让我们来测试一下

82
00:06:44,840 --> 00:06:49,190
‫我将单击“播放”, 然后单击左键查看｡

83
00:06:49,190 --> 00:06:51,200
‫我们的炮弹在移动｡

84
00:06:51,200 --> 00:06:55,550
‫他们在空中飞行, 一旦他们真的击中了什么东西, 他们就会停下来｡

85
00:06:55,550 --> 00:07:00,260
‫现在, 最终我们想做的是让它们爆炸并造成破坏｡

86
00:07:00,260 --> 00:07:02,780
‫但这是一个很好的起点｡

87
00:07:02,780 --> 00:07:08,420
‫现在让我们移动到射程内看看炮塔是否会产生炮弹｡

88
00:07:08,420 --> 00:07:09,740
‫他们当然不会｡

89
00:07:09,740 --> 00:07:13,640
‫原因是因为我们有变量的TW子类｡

90
00:07:13,640 --> 00:07:19,730
‫所以, 如果你想知道为什么炮塔实际上没有产卵炮弹, 你可能没有设置｡

91
00:07:19,730 --> 00:07:25,370
‫所以让我们继续前进, 进入池塘和叭塘, 炮塔和打开完整的蓝图｡

92
00:07:25,370 --> 00:07:29,960
‫编辑我们把投射类放在了战斗部分｡

93
00:07:29,960 --> 00:07:38,780
‫这是我们的子类, 所以如果我们把它设置为BP projectile, 我们的炮塔也应该开始繁殖projectile了｡

94
00:07:38,780 --> 00:07:41,960
‫所以我们进入射程, 就这样｡

95
00:07:41,960 --> 00:07:43,910
‫它在向我们发射炮弹｡

96
00:07:43,910 --> 00:07:46,550
‫这看起来很棒｡

97
00:07:47,030 --> 00:07:48,950
‫所以我们现在有了投射物｡

98
00:07:48,950 --> 00:07:51,230
‫让我们来看看我们的分区计划｡

99
00:07:51,230 --> 00:07:59,150
‫我们已经创建了一个坦克, 可以在世界各地移动, 我们现在处理输入与WASD键和鼠标点击｡

100
00:07:59,150 --> 00:08:06,590
‫我们创建了一个敌方炮塔类, 我们在C++中称之为塔, 我们还添加了射击功能和炮弹｡

101
00:08:06,590 --> 00:08:11,240
‫接下来, 我们需要处理这个游戏中的生命伤害和破坏｡

102
00:08:11,240 --> 00:08:15,770
‫这些就是我们接下来要采取的步骤, 这些步骤将在接下来的视频中介绍｡

103
00:08:15,770 --> 00:08:21,890
‫现在我们已经添加了一个抛射体运动组件, 我们现在有了实际的抛射体｡

104
00:08:21,890 --> 00:08:29,270
‫我们会在下一个视频中看到, 当我们开始讨论如何让这些抛射体爆炸并造成破坏时｡

105
00:08:29,690 --> 00:08:30,650
‫我很快就会见到你的｡

