﻿1
00:00:04,450 --> 00:00:05,320
‫你好, 欢迎｡

2
00:00:05,320 --> 00:00:11,200
‫在这堂课中, 我们将学习布尔运算符, 这样我们就可以做出复杂的语句,

3
00:00:11,200 --> 00:00:18,760
‫需要多个布尔值才能为真, 比如说, 只有当一个滴水嘴是正确的标签, 并且它没有被抓住时,

4
00:00:18,760 --> 00:00:23,470
‫它才被接受｡

5
00:00:23,470 --> 00:00:29,020
‫所以当我放开石像鬼的时候, 你可以看到墙只在那一点上有反应｡

6
00:00:29,020 --> 00:00:31,030
‫让我们深入了解一下它是如何工作的｡

7
00:00:31,990 --> 00:00:42,040
‫因此, 现在理想情况下, 我们希望触发器组件忽略或不接受当前正在被抓取的可接受参与者｡

8
00:00:42,040 --> 00:00:48,820
‫为了改变这种情况, 我将深入到触发器组件CP中可接受的参与者实现中, 您可以在if语句中看到,

9
00:00:48,850 --> 00:00:57,550
‫我们目前正在说, 如果参与者具有可接受的标记, 我们将选择它, 这是我们正在做的唯一事情｡

10
00:00:57,700 --> 00:01:01,750
‫但我想做的是, 在两个条件下｡

11
00:01:01,750 --> 00:01:04,960
‫如何联合收割机两个布尔值？

12
00:01:04,960 --> 00:01:06,280
‫有几个选择｡

13
00:01:06,280 --> 00:01:08,500
‫我们有一些运算符｡

14
00:01:08,500 --> 00:01:12,940
‫其中之一是&号&号运算符, 我们读作｡

15
00:01:12,940 --> 00:01:20,020
‫这基本上意味着这将是两个布尔值的组合, 所以只有当它们都为真时才为真｡

16
00:01:20,350 --> 00:01:27,700
‫所以如果我们有true和true, 那么它就等于true｡

17
00:01:27,880 --> 00:01:32,950
‫然而如果这两个都是假的, 那么如果右边的一个是假的, 那么整个事情都是假的,

18
00:01:32,950 --> 00:01:40,150
‫等等｡ 这里还有另一个选择,

19
00:01:40,150 --> 00:01:44,170
‫就是使用这个双杠运算符, 就像这样, 这个可以读作或｡

20
00:01:44,170 --> 00:01:49,780
‫基本上这意味着如果这两个中的任何一个是真的, 那么结果就是真的｡

21
00:01:49,780 --> 00:01:52,510
‫同样, 如果它们都是真的, 那么结果也将是真的｡

22
00:01:52,510 --> 00:01:57,430
‫但如果两者都是假的, 那么结果也会是假的｡

23
00:01:57,430 --> 00:02:00,520
‫这是我们常用的一些表达方式｡

24
00:02:00,520 --> 00:02:11,980
‫我们还用了一个感叹号, 感叹号基本上把我们得到的布尔值反转了, 读作not.

25
00:02:11,980 --> 00:02:19,990
‫所以你可以有false, 但是因为我在它前面加了一个结, 这个值, 这个表达式就变成了true｡

26
00:02:19,990 --> 00:02:27,700
‫如果我用false来排序, 那么, 因为其中至少有一个是真的, 那么结果就是真的｡

27
00:02:28,300 --> 00:02:36,310
‫所以我们在这里要做的是, 如果它有一个演员标签, 那就是可接受的行为标签,

28
00:02:36,310 --> 00:02:40,210
‫但它没有.

29
00:02:40,210 --> 00:02:46,300
‫所以在这种情况下, 它没有被抓取的演员标签, 那么是可以接受的｡

30
00:02:46,300 --> 00:02:47,980
‫对你来说挑战太多了｡

31
00:02:47,980 --> 00:02:52,300
‫如何使用我刚才解释的这三个运算符？

32
00:02:52,300 --> 00:02:58,060
‫你不需要使用所有的条件, 但是你会使用哪些条件, 你会如何写出这个if语句呢？

33
00:03:00,110 --> 00:03:00,350
‫好吧, 我会的

34
00:03:00,380 --> 00:03:03,380
‫所以我将把它放到布尔变量中, 让它变得非常清楚｡

35
00:03:03,380 --> 00:03:17,870
‫所以bool的acceptable tag等于actor的acceptable tag, 就像这样, 在行尾加一个分号.

36
00:03:17,870 --> 00:03:27,770
‫现在, 另一个布尔值将是它是否被抓取, 我们可以通过以下方式得到：actor箭头actor有标记, 在这种情况下,

37
00:03:27,950 --> 00:03:35,240
‫它将被抓取, 就像这样,

38
00:03:35,240 --> 00:03:44,420
‫所以我们可以说, 无论它是否被抓取, 在此基础上, 然后在if中,

39
00:03:44,420 --> 00:03:54,560
‫我们要说的是有可接受的标记, 所以这是&号, 而不是that's一个感叹号被抓取为so, 所以读起来相当不错, 如果你读出&号和感叹号为and

40
00:03:54,560 --> 00:04:05,770
‫and not, 那么如果acceptable有acceptable标签, 并且抓取了not, 那么我们返回这个actor｡

41
00:04:05,780 --> 00:04:08,240
‫让我们编译它, 看看它是否有效｡

42
00:04:08,240 --> 00:04:10,130
‫现在我们按播放键｡

43
00:04:10,160 --> 00:04:15,140
‫我们拿着石像鬼跑到触发区｡

44
00:04:15,230 --> 00:04:20,600
‫你看, 我把滴水嘴放进去了, 但是什么也没发生, 因为我还没有把它放出来｡

45
00:04:20,600 --> 00:04:23,420
‫如果我试着把石像鬼弄下来呢？

46
00:04:23,450 --> 00:04:23,840
‫你去那里｡

47
00:04:23,840 --> 00:04:30,270
‫我一松开它, 它就激活了它, 抓住石像鬼离开我, 它就消失在地下｡

48
00:04:30,290 --> 00:04:38,000
‫在Grab a CP中有两个地方, 我们有两个if语句, 如果我们使用and,

49
00:04:38,000 --> 00:04:43,670
‫or, 而不运算的话, 我们可以只有一个语句｡

50
00:04:43,670 --> 00:04:48,980
‫这里的技巧之一是当你在做类似这样的事情,

51
00:04:48,980 --> 00:04:55,280
‫我们检查某个东西是否不是空指针时, 另一个选择是你可以简单地删除这个不等于空指针｡

52
00:04:55,280 --> 00:05:06,620
‫如果你简单地说if, 然后放入某种指针作为布尔值, 那么它会自动检查它不是空指针｡

53
00:05:06,620 --> 00:05:16,460
‫如果这里有物理句柄, 如果有抓取组件, 我们就可以使用它｡

54
00:05:16,460 --> 00:05:19,400
‫所以我想挑战你们把你们的if语句组合起来｡

55
00:05:19,400 --> 00:05:22,340
‫所以你要把它们连接在一起, 组成一个分笔成交点｡

56
00:05:22,340 --> 00:05:28,190
‫考虑一下你是否需要使用“与”､ “和”､ “和”或“,

57
00:05:28,190 --> 00:05:35,240
‫或者你是否需要使用一个否定､ 一个结或一个感叹号, 然后在发布时将它们连接在一起, 测试你的功能,

58
00:05:35,240 --> 00:05:37,710
‫看看它是否仍然有效｡

59
00:05:37,730 --> 00:05:39,800
‫暂停视频, 开始体验｡

60
00:05:42,930 --> 00:05:43,380
‫好吧, 我会的

61
00:05:43,380 --> 00:05:44,070
‫欢迎回来｡

62
00:05:44,070 --> 00:05:50,040
‫所以我们要利用这个,

63
00:05:50,040 --> 00:06:00,240
‫因为基本上我们要在release中做的是, 如果我们有一个有效的物理句柄, 并且这个物理句柄有一个被抓取的组件, 那么我们要做这个if语句的主体｡

64
00:06:00,240 --> 00:06:03,000
‫所以这样写很简单｡

65
00:06:03,000 --> 00:06:12,240
‫我们可以说, 如果物理句柄和物理句柄得到了被抓取的组件, 那么我们就可以做下面的事情｡

66
00:06:12,240 --> 00:06:18,600
‫这样我们就可以删除这个早期的return if语句, 使代码更短一些｡

67
00:06:18,870 --> 00:06:26,400
‫现在, 你们当中的眼尖的人可能会担心, 嘿,

68
00:06:26,400 --> 00:06:32,340
‫我们正在引用if语句中的这个物理句柄, 以便评估这个and语句是否应该工作｡

69
00:06:32,760 --> 00:06:38,550
‫现在有了的一个特性, 它将首先计算左边的东西｡

70
00:06:38,550 --> 00:06:43,920
‫如果这个东西是假的, 那么它甚至不会计算右边的东西｡

71
00:06:43,920 --> 00:06:44,820
‫它不需要｡

72
00:06:44,850 --> 00:06:47,580
‫它已经知道结果将是假的｡

73
00:06:47,580 --> 00:06:50,130
‫它不需要进一步评估任何东西｡

74
00:06:50,130 --> 00:06:57,090
‫所以这意味着, 这样做是安全的, 右边的结果是正确的, 只有左边的结果是正确的,

75
00:06:57,090 --> 00:07:01,500
‫才是安全的｡

76
00:07:01,890 --> 00:07:06,810
‫这是一个非常方便的属性, 当你使用指针的时候, 你会看到这个属性经常被使用,

77
00:07:06,810 --> 00:07:10,320
‫首先你会检查指针, 然后你会有一个&号｡

78
00:07:10,320 --> 00:07:13,860
‫和号, 然后您将使用指针在右手边｡

79
00:07:13,860 --> 00:07:18,660
‫但请, 请, 请不要被诱惑, 以交换这两个左右的顺序｡

80
00:07:18,660 --> 00:07:22,950
‫它不会工作的其他方式, 你会得到崩溃｡

81
00:07:22,950 --> 00:07:28,080
‫现在让我们来看看分笔成交点组件, 我们在这里做的基本上是完全相同的事情｡

82
00:07:28,080 --> 00:07:30,720
‫我们想检查是否有被抓取的组件｡

83
00:07:30,720 --> 00:07:37,200
‫所以我们在这里可以做的是, 我们可以做物理处理和物理处理｡

84
00:07:37,470 --> 00:07:38,940
‫箭头抓住组件｡

85
00:07:38,940 --> 00:07:44,430
‫我们不需要这个不等于空指针来保持它的整洁, 然后我们可以继续,

86
00:07:44,430 --> 00:07:50,430
‫去掉带有return的if语句, 只需要减少代码行, 保持代码的可读性高一点｡

87
00:07:50,460 --> 00:07:50,970
‫好东西｡

88
00:07:50,970 --> 00:07:57,480
‫在这节课中, 我们已经知道了如何在C++中使用and, or, not运算符｡

89
00:07:57,480 --> 00:07:58,980
‫我们下节课再见｡

