﻿1
00:00:04,260 --> 00:00:05,190
‫你好, 欢迎｡

2
00:00:05,190 --> 00:00:10,170
‫在这节课中,

3
00:00:10,170 --> 00:00:17,100
‫我们将从敌人那里得到一条视线, 这样我们作为玩家, 就能躲在障碍物后面而敌人的追随者就不会有障碍物.

4
00:00:17,100 --> 00:00:22,560
‫一直瞄准我们直到我们弹出来让他们看见｡

5
00:00:22,560 --> 00:00:25,890
‫所以你可以看到这里我藏在一个角落里, 他找不到我｡

6
00:00:25,890 --> 00:00:29,400
‫让我们深入研究一下, 看看如何使用虚幻的工具来实现这一点｡

7
00:00:30,470 --> 00:00:35,120
‫所以这个敌人A. 一､  现在可以跟踪我们｡

8
00:00:35,120 --> 00:00:40,720
‫不管我们走多远不管我们躲在柱子后面它还是会找到我们

9
00:00:40,720 --> 00:00:43,430
‫它还是会来继续瞄准我们｡

10
00:00:43,430 --> 00:00:48,680
‫我们想纠正这一点, 我们将通过检查从敌人到玩家的视线来做到这一点｡

11
00:00:48,680 --> 00:00:57,260
‫现在, 就像《虚幻》中的很多东西一样, 眼睛控制器中已经有了一个功能, 叫做视线｡

12
00:00:57,260 --> 00:01:01,430
‫如果你去搜索它, 你会发现有一个函数返回一个布尔值｡

13
00:01:01,430 --> 00:01:06,440
‫所以告诉我们是否有视线,

14
00:01:06,440 --> 00:01:14,900
‫然后它需要我们检查视线的演员, 它会自动考虑到一些事情, 比如说棋子的眼睛位置｡

15
00:01:14,900 --> 00:01:20,300
‫所有这些东西都已经被编码成虚幻真的很酷, 所以它应该是相当简单的｡

16
00:01:20,300 --> 00:01:28,250
‫如果我们转到人工智能控制器DHCP, 我们基本上要做的是在TIC中进行更改,

17
00:01:28,250 --> 00:01:32,630
‫以便我们首先执行if视线｡

18
00:01:33,420 --> 00:01:43,050
‫然后我们要做的是, 如果我们有视线, 我们要移动到, 我们要设置焦点｡

19
00:01:43,380 --> 00:01:48,960
‫但是, 如果我们在别的方面不这样做, 我们要做的就是明确焦点｡

20
00:01:48,960 --> 00:01:57,630
‫记住, 我们之前已经看过这个函数了, 我们现在要做的是让我们看看停止运动｡

21
00:01:58,560 --> 00:02:01,470
‫这是另一个我们还没见过的函数｡

22
00:02:01,590 --> 00:02:09,000
‫所以我现在要做的是, 如果你有信心的话, 我可以向你挑战, 让你自己实施整个计划｡

23
00:02:09,120 --> 00:02:14,970
‫另外, 这个else是我们之前没有见过的更复杂的部分, 因为另外两个, 我们已经做了一个演员的动作,

24
00:02:14,970 --> 00:02:18,480
‫我们已经做了我们的设置焦点, 我们以前做过｡

25
00:02:18,480 --> 00:02:22,500
‫这就是我们刚才看到的视线｡

26
00:02:22,500 --> 00:02:23,460
‫很简单｡

27
00:02:23,460 --> 00:02:24,420
‫你可以实现它｡

28
00:02:24,420 --> 00:02:25,620
‫但是这个呢？

29
00:02:25,620 --> 00:02:29,070
‫让我们来尝试实现just the ELT子句｡

30
00:02:29,070 --> 00:02:35,820
‫它不会被编译, 因为你显然需要在else之前有一个if, 但是让我们直接写出ELT子句.

31
00:02:36,180 --> 00:02:43,110
‫所以首先要明确的是, 基本上我们是说, 不要试图跟踪球员, 因为你看不到球员｡

32
00:02:43,110 --> 00:02:47,610
‫你不应该给人一种你知道球员在哪里的印象, 即使眼睛显然可以,

33
00:02:47,610 --> 00:02:51,000
‫因为它可以访问球员的位置等等｡

34
00:02:51,000 --> 00:02:56,160
‫但我们需要给予人一种错觉, 即人工智能只知道它能看到的那么多｡

35
00:02:56,370 --> 00:02:59,550
‫所以我们要做的是跟注, 以明确重点｡

36
00:02:59,550 --> 00:03:07,410
‫如果我们转到人工智能控制器H, 看一下清除焦点, 你可以看到它接受了我们需要清除的优先级｡

37
00:03:07,410 --> 00:03:13,620
‫现在, 提醒一下, 这些优先事项基本上是不同层次的重点｡

38
00:03:13,620 --> 00:03:20,820
‫因此, 我们通常默认的移动和游戏性游戏性是最高优先级的事情｡

39
00:03:20,820 --> 00:03:24,270
‫我们默认设置的是游戏优先级｡

40
00:03:24,270 --> 00:03:29,580
‫所以我们要做的是清除游戏优先级, 这意味着如果我们已经基于移动聚焦,

41
00:03:29,580 --> 00:03:37,080
‫例如, 如果我们的眼睛然后想移回它的守卫点, 那么焦点将不会被清除,

42
00:03:37,080 --> 00:03:41,070
‫它将离开移动回它的守卫点｡

43
00:03:41,430 --> 00:03:43,440
‫这就是专注的工作方式｡

44
00:03:43,440 --> 00:03:45,660
‫这就是优先权制度的运作方式｡

45
00:03:45,660 --> 00:03:55,440
‫所以我们要做的就是复制一个关于冒号游戏的焦点优先级代码, 这就是我们要在这一行中清除的优先级｡

46
00:03:55,440 --> 00:03:58,020
‫然后另一件事是停止运动｡

47
00:03:58,020 --> 00:04:03,150
‫所以我们想再看一下人工智能控制的RH, 看看停止运动｡

48
00:04:03,150 --> 00:04:11,730
‫当然, 有一个简单的无参数函数, 叫做停止移动, 它允许我们这样做｡

49
00:04:11,910 --> 00:04:12,780
‫所以你去那里｡

50
00:04:12,780 --> 00:04:16,020
‫这基本上是书面声明｡

51
00:04:16,020 --> 00:04:25,170
‫所以现在只是提醒一下, 用if视线实现if部分以及移动到并设置焦点对你来说仍然是一个挑战｡

52
00:04:25,170 --> 00:04:27,750
‫你基本上要删除这里的代码｡

53
00:04:27,750 --> 00:04:33,000
‫我只想注释掉它, 然后整理出你想要的位置｡

54
00:04:33,000 --> 00:04:33,870
‫所以暂停视频｡

55
00:04:33,870 --> 00:04:35,130
‫没有挑战, 滑到这里｡

56
00:04:35,130 --> 00:04:38,190
‫你自己去执行这三条线吧｡

57
00:04:39,210 --> 00:04:39,690
‫好吧, 我会的

58
00:04:39,690 --> 00:04:40,270
‫欢迎回来｡

59
00:04:40,290 --> 00:04:42,150
‫我们就从这个开始吧｡

60
00:04:42,150 --> 00:04:51,660
‫如果是这样的话, 如果开括号视线到, 然后我们想做视线到演员, 这是球员兵,

61
00:04:51,660 --> 00:04:54,360
‫我们想获得访问｡

62
00:04:54,360 --> 00:05:00,900
‫我们先取消对这个兵的注释, 它会把缩进的部分弄乱.

63
00:05:00,900 --> 00:05:02,160
‫让我们来解决这个问题｡

64
00:05:02,490 --> 00:05:10,320
‫然后我们需要括号, 这里的花括号, 我们要移动到actor.

65
00:05:10,320 --> 00:05:14,460
‫实际上, 我们可以复制并取消对actor的注释｡

66
00:05:15,230 --> 00:05:18,380
‫我们要取消注释它｡

67
00:05:18,380 --> 00:05:19,100
‫是的, 我们走吧｡

68
00:05:19,100 --> 00:05:22,490
‫我们也可以移动焦点｡

69
00:05:22,520 --> 00:05:28,070
‫现在, 焦点,

70
00:05:28,070 --> 00:05:34,640
‫不管你是在移动到演员之前还是之后, 因为移动到演员确实设置了焦点, 它设置了一个较低的优先级, 移动焦点而不是游戏焦点｡

71
00:05:34,640 --> 00:05:38,900
‫所以这两个操作的顺序并不重要｡

72
00:05:38,990 --> 00:05:44,030
‫最后我们可以删除这条注释掉的线, 在这里我们在开始游戏中得到了玩家的兵,

73
00:05:44,030 --> 00:05:49,280
‫因为我们不再需要它了, 现在一切都在滴答声中了, 所以我们可以删除开始游戏｡

74
00:05:49,280 --> 00:05:54,170
‫我打算把它留在身边, 以防我们以后需要它, 这样就保存了把它加回去的麻烦｡

75
00:05:54,170 --> 00:05:58,280
‫让我们前往虚幻和编译, 当这完成, 让我们玩｡

76
00:05:58,280 --> 00:06:00,710
‫我们来看看能不能躲过这个演员｡

77
00:06:00,710 --> 00:06:04,370
‫我会尽量快速地绕过拐角｡

78
00:06:04,760 --> 00:06:09,170
‫这有点棘手, 因为它们的移动速度和你一样快, 但如果你像那样转过弯, 它们就会说,

79
00:06:09,170 --> 00:06:11,570
‫他看不见我了.

80
00:06:11,570 --> 00:06:13,310
‫他不再追我了｡

81
00:06:13,310 --> 00:06:16,550
‫我可以在角落里偷看, 看到我在移动｡

82
00:06:16,550 --> 00:06:20,150
‫他没有改变瞄准因为我们已经明确了目标｡

83
00:06:20,210 --> 00:06:22,370
‫可以从另一个角落偷看｡

84
00:06:22,640 --> 00:06:23,180
‫让我想想｡

85
00:06:23,180 --> 00:06:24,560
‫在这里捡｡

86
00:06:24,590 --> 00:06:25,070
‫你去那里｡

87
00:06:25,070 --> 00:06:27,770
‫你可以看到他还在瞄准我最后所在的位置｡

88
00:06:27,770 --> 00:06:34,220
‫但如果我突然出现在视线中, 他就会继续瞄准, 并在接受半径内移动｡

89
00:06:34,400 --> 00:06:38,900
‫说到这个, 我希望这个接受半径可以由设计师配置｡

90
00:06:38,900 --> 00:06:41,120
‫所以让我们把它移到一个新的属性中｡

91
00:06:41,240 --> 00:06:45,350
‫我将在此处创建一个具有新属性的私有分区｡

92
00:06:46,260 --> 00:06:48,330
‫这将是一个编辑任何地方｡

93
00:06:48,780 --> 00:06:58,830
‫我们希望它是一个浮点数, 称为接受半径, 并将其默认值设为200｡

94
00:06:59,100 --> 00:07:04,530
‫然后这个接受半径我们可以继续使用, 并在我们移动到演员｡

95
00:07:04,530 --> 00:07:08,340
‫如果你编译它, 它会给予你完全相同的行为,

96
00:07:08,340 --> 00:07:11,940
‫除了现在你可以在AI控制器蓝图中改变它｡

97
00:07:11,940 --> 00:07:13,320
‫这节课就讲到这里｡

98
00:07:13,320 --> 00:07:19,740
‫我们已经发现视线的功能, 使我们能够检查眼睛是否能看到什么｡

99
00:07:19,740 --> 00:07:26,220
‫我们已经实现了这个基本的隐藏功能, 这样人工智能就不会在看不到我们的时候跟踪我们｡

100
00:07:26,250 --> 00:07:26,850
‫下节课｡

101
00:07:26,850 --> 00:07:33,570
‫我们将从这个自定义编程的人工智能中提升一个档次, 并使用行为树｡

102
00:07:33,570 --> 00:07:39,000
‫一个非常强大的工具, 在虚幻中, 使我们的人工智能只是更酷｡

