﻿1
00:00:04,420 --> 00:00:05,890
‫欢迎回来

2
00:00:05,920 --> 00:00:10,720
‫在上一个视频中, 我们创建了capsule组件, 并将其设置为根｡

3
00:00:10,750 --> 00:00:13,960
‫在此视频中, 我们需要添加更多组件｡

4
00:00:13,960 --> 00:00:18,520
‫具体来说, 我们需要一些网格为基地和炮塔部分, 我们的坦克｡

5
00:00:19,030 --> 00:00:24,100
‫我们还需要一个抛射体产生点, 就像我们在前面的课上讨论过的｡

6
00:00:24,280 --> 00:00:26,230
‫让我们跳到VS代码｡

7
00:00:26,260 --> 00:00:29,950
‫现在, 在Base Pancake中, 我们有了胶囊组件｡

8
00:00:29,950 --> 00:00:34,540
‫我们可以将其他组件添加到它下面的私有部分中｡

9
00:00:34,570 --> 00:00:39,370
‫因此, 对于我们的网格, 我们希望使用静态网格组件｡

10
00:00:39,610 --> 00:00:45,580
‫当然, 这些将是指针,

11
00:00:45,580 --> 00:00:51,790
‫因为这不是一个基本类型, 第一个网格我将称为基本网格, 就像胶囊组件一样, 基本网格将有自己的属性宏｡

12
00:00:51,940 --> 00:00:57,760
‫现在请注意, 您的静态网格组件不会因为未向前声明它而向我发出错误｡

13
00:00:57,760 --> 00:01:03,820
‫这是因为你的静态网格组件默认包含在所有的actor中, 当然卒子也是actor,

14
00:01:03,820 --> 00:01:07,090
‫所以它已经使用了静态网格组件｡

15
00:01:07,120 --> 00:01:11,860
‫现在, 如果您想知道如何知道哪些类型是默认包含的, 哪些类型不是, 您可以尝试编译,

16
00:01:11,860 --> 00:01:14,230
‫看看是否会出现错误｡

17
00:01:14,230 --> 00:01:18,820
‫我们知道当您未能包含所需的头时, 错误会是什么样子｡

18
00:01:18,850 --> 00:01:30,490
‫另一种方法是始终向前声明并始终包含不真实引擎类型的头文件, 这些头文件具有防止它们在单个文件中被多次包含的包含保护｡

19
00:01:30,520 --> 00:01:33,700
‫事实上, 我们现在所在的标题中就有这样一个｡

20
00:01:33,700 --> 00:01:35,620
‫以前叫布拉格WMA｡

21
00:01:35,620 --> 00:01:40,180
‫不管怎样, 我们已经有了基础网格, 我们还需要另一个静态网格组件｡

22
00:01:40,180 --> 00:01:46,300
‫因此, 这将是一个U静态网格组件指针, 这将是炮塔｡

23
00:01:46,300 --> 00:01:52,660
‫所以我将这个炮塔网格称为, 就像基本网格一样, 它也会得到一个U属性宏｡

24
00:01:52,660 --> 00:01:58,030
‫现在我们有了基础网格和炮塔网格指针, 是时候实际构建这些了｡

25
00:01:58,030 --> 00:02:02,980
‫让我们转到Base蓬特CP并在这里的构造函数中执行该操作｡

26
00:02:02,980 --> 00:02:10,420
‫首先, 我们将使用基础网格, 并将其赋值为创建默认子对象返回的值｡

27
00:02:10,420 --> 00:02:15,370
‫在我填写之前, 你先在这里输入正确的类型吧？

28
00:02:17,280 --> 00:02:17,910
‫没错, 我是说...

29
00:02:17,910 --> 00:02:20,450
‫它是静态网格组件｡

30
00:02:20,460 --> 00:02:26,190
‫现在, 我们将使用文本宏来命名, 我们可以将其称为基础网格｡

31
00:02:26,400 --> 00:02:32,880
‫现在, 我们将基础网格附加到某个东西上是很重要的, 因为我们希望网格跟随胶囊组件｡

32
00:02:32,880 --> 00:02:36,300
‫在移动PON时, 我们要将其连接到根｡

33
00:02:36,420 --> 00:02:46,050
‫因此, 基础网格具有一个称为设置附件的功能, 设置附件需要附加到一个可见组件｡

34
00:02:46,080 --> 00:02:49,320
‫我们要把底部补片连接到胶囊组件上｡

35
00:02:49,380 --> 00:02:52,560
‫我们可以很容易地在这里有过去的根组件｡

36
00:02:52,860 --> 00:02:56,220
‫现在, 我们将以相同的方式创建炮塔网格｡

37
00:02:56,220 --> 00:03:04,620
‫因此, 炮塔网格等于创建默认子对象, 这也将是一个使用静态网格组件｡

38
00:03:04,950 --> 00:03:08,550
‫这个的名字, 我们叫它炮塔网｡

39
00:03:09,840 --> 00:03:14,940
‫我们之前提到过,

40
00:03:14,970 --> 00:03:21,480
‫我们希望将转塔网格连接到基础网格, 因此我们可以说转塔网格设置了附件, 并且将其连接到的组件将是基础网格｡

41
00:03:21,810 --> 00:03:27,600
‫所以我们将传递基本网格和作为参数, 那么安装附件来自哪里？

42
00:03:27,600 --> 00:03:33,420
‫如果我们右键单击并转到定义, 我们将看到它是scene组件中的一个函数｡

43
00:03:33,570 --> 00:03:36,180
‫所以所有的场景组件都有这个功能｡

44
00:03:36,420 --> 00:03:38,400
‫我们将关闭场景组件｡

45
00:03:38,820 --> 00:03:43,800
‫现在, 您可能注意到IntelliSense错误, 指出指针指向不完整的类类型｡

46
00:03:43,800 --> 00:03:46,050
‫这实际上是另一个假错误｡

47
00:03:46,050 --> 00:03:53,040
‫我们下载的那个扩展实际上并没有修复这个问题, 但是这个编译得很好, 所以我们不需要担心这个问题｡

48
00:03:53,040 --> 00:04:06,600
‫现在, 如果你觉得麻烦的话, 你可以添加包含组件, 斜线静态网格组件, 这样就可以去掉那些红色的曲线了｡

49
00:04:06,600 --> 00:04:11,220
‫正如我提到的, 这些都包括警卫, 所以他们不会包括两次｡

50
00:04:11,220 --> 00:04:12,540
‫所以这取决于你｡

51
00:04:12,570 --> 00:04:16,410
‫我将继续, 并在这里留下包含, 这样我们就不会得到那些波形｡

52
00:04:16,410 --> 00:04:22,620
‫所以现在我们有我们的基础网格在我们的炮塔网格, 唯一剩下的是我们的炮弹产卵点｡

53
00:04:22,620 --> 00:04:24,770
‫所以这将是你的挑战｡

54
00:04:25,050 --> 00:04:28,860
‫创建一个名为投射体spawn point的指针｡

55
00:04:29,190 --> 00:04:35,070
‫选择适合投射物繁殖点的正确类型, 并使用文本宏为其命名,

56
00:04:35,070 --> 00:04:38,460
‫然后创建默认子对象｡

57
00:04:38,610 --> 00:04:42,090
‫将投射物产生点附加到炮塔网格｡

58
00:04:42,270 --> 00:04:47,730
‫我想让你们考虑的一个问题是, 我们是否需要包括它的头文件, 暂停视频,

59
00:04:47,850 --> 00:04:49,860
‫然后现在就创建这个组件？

60
00:04:52,650 --> 00:04:53,280
‫好吧, 我会的

61
00:04:53,280 --> 00:04:55,360
‫让我们添加下一个组件｡

62
00:04:55,380 --> 00:05:03,170
‫现在, 投射物产生点将是一个U向可见组件, 我们将其称为投射物产生点｡

63
00:05:03,180 --> 00:05:05,550
‫现在, 我们将添加一个you属性宏｡

64
00:05:05,580 --> 00:05:06,180
‫没关系, 我会的

65
00:05:06,180 --> 00:05:11,790
‫如果您没有这样做, 如果您没有立即添加您的属性宏, 现在让我们转到Base Pond

66
00:05:11,790 --> 00:05:15,300
‫CP并构造此组件｡

67
00:05:15,300 --> 00:05:22,290
‫所以我们要说抛射体产生点并创建默认子对象｡

68
00:05:22,290 --> 00:05:25,320
‫这将是一个你看到的组件｡

69
00:05:25,350 --> 00:05:28,080
‫你可能给它起了个很棒的名字｡

70
00:05:28,080 --> 00:05:32,910
‫我将其命名为Spawn point, 我们需要为此设置附件｡

71
00:05:32,910 --> 00:05:41,190
‫我们将输入投射体生成点, 设置附件, 并将其连接到炮塔网格上, 这样我们就可以编译它了,

72
00:05:41,400 --> 00:05:49,620
‫确保所有内容都编译成功, 我们就有了一个成功的编译｡

73
00:05:49,620 --> 00:05:51,570
‫一切都很顺利｡

74
00:05:51,570 --> 00:05:58,320
‫因此, 在本视频中, 我们创建了静态网格组件, 我们看到我们不需要包含这些组件的标头｡

75
00:05:58,320 --> 00:06:00,330
‫默认情况下已包含这些属性｡

76
00:06:00,330 --> 00:06:07,140
‫我们还创建了一个名为projectory spawn point的场景组件, 我们的代码编译得很好,

77
00:06:07,140 --> 00:06:09,240
‫没有包含它的头文件｡

78
00:06:09,270 --> 00:06:13,920
‫我们将很快创建一个基于我们的基本池C++类的蓝图｡

79
00:06:14,070 --> 00:06:15,480
‫下一个视频里见｡

