﻿1
00:00:04,350 --> 00:00:05,430
‫你好, 欢迎｡

2
00:00:05,430 --> 00:00:10,500
‫在这节课中, 我们将学习if语句, 基本上C++就是分支语句,

3
00:00:10,500 --> 00:00:14,580
‫我们将用它来让我们的平台向前和向后运行｡

4
00:00:14,580 --> 00:00:15,450
‫我们开始吧｡

5
00:00:16,240 --> 00:00:23,440
‫所以现在在评论中有几个地方我们提到了如果我们做得太过分了我们应该做些什么｡

6
00:00:23,470 --> 00:00:25,920
‫我们该怎么做如果｡

7
00:00:25,930 --> 00:00:31,410
‫在之前的Blueprint中, 我们使用分支节点执行了该操作｡

8
00:00:31,420 --> 00:00:36,760
‫在C++中有一个类似的概念, 叫做if语句｡

9
00:00:36,760 --> 00:00:42,070
‫这里有一个分支节点, 我们之前举过一个例子,

10
00:00:42,070 --> 00:00:47,590
‫你可以看到我们有一个变量, 它说, 我饿了,

11
00:00:47,590 --> 00:00:53,370
‫这是一个布尔值, 我们可以把它放在条件中, 然后我们可以有一个真执行分支或假执行分支, 我们可以执行代码函数｡

12
00:00:53,380 --> 00:00:58,300
‫在C++的Blueprint中的任何东西, 除了它是文本的之外, 都非常相似｡

13
00:00:58,300 --> 00:01:05,710
‫所以我们有一个变量I'm Hungry, 它是一个布尔值, 我们可以用if和括号括起来.

14
00:01:06,190 --> 00:01:14,260
‫然后我们在if语句之后的下一行打开花括号, 然后在花括号内, 我们可以执行, 如果它为真,

15
00:01:14,260 --> 00:01:19,630
‫应该发生的事情｡

16
00:01:19,630 --> 00:01:25,300
‫所以我们说如果我饿了, 趁老婆不注意的时候吃垃圾食品, 然后我们可以关闭花括号说,

17
00:01:25,300 --> 00:01:30,640
‫好了, 这是有条件发生的事情的结束｡

18
00:01:31,090 --> 00:01:35,590
‫如果我们想放一个false分支,

19
00:01:35,590 --> 00:01:42,220
‫如果我们想把某个东西连接到这个false, 那么我们放一个else关键字, 然后我们可以开始第二组括号｡

20
00:01:42,220 --> 00:01:46,570
‫在这里我们可以继续玩电子游戏, 然后我们可以关闭括号｡

21
00:01:46,570 --> 00:01:50,260
‫在这里, 我们可以在这些大括号之间放置任意多行｡

22
00:01:50,260 --> 00:01:52,780
‫不一定只有一条线｡

23
00:01:52,780 --> 00:01:57,280
‫所以如果你愿意的话, 你可以在这里添加很多代码, 或者你可以只写一行｡

24
00:01:57,280 --> 00:02:01,690
‫还有这里的变量, 它不一定是插入if语句的变量｡

25
00:02:01,690 --> 00:02:04,990
‫它可以是返回布尔值的任何表达式｡

26
00:02:04,990 --> 00:02:08,710
‫所以你可以在这里调用一个函数｡

27
00:02:08,710 --> 00:02:12,520
‫您可以使用运算子来取得不同的结果｡

28
00:02:12,520 --> 00:02:15,280
‫所以我们有几个不同的选择｡

29
00:02:15,280 --> 00:02:22,360
‫但在此之前, 我们需要配置该平台在返回之前允许走多远｡

30
00:02:22,360 --> 00:02:24,910
‫要做到这一点, 我们需要一个U属性｡

31
00:02:24,910 --> 00:02:28,330
‫我们目前已经将距离移动为可见的任意位置｡

32
00:02:28,330 --> 00:02:34,480
‫让我们在上面创建一个新的属性, 该属性应在任何位置进行编辑,

33
00:02:34,480 --> 00:02:43,120
‫因为我们希望能够在编辑器中对其进行配置, 我将使用相同类别的移动平台, 从上到下依次进行｡

34
00:02:43,120 --> 00:02:48,970
‫这里它是浮点型的, 因为它是一个距离, 我把它叫做移动距离,

35
00:02:48,970 --> 00:02:53,410
‫这样我们就可以给予它一个默认值｡

36
00:02:53,410 --> 00:02:57,730
‫我会给予它100个单位作为默认值,

37
00:02:57,730 --> 00:03:02,380
‫但显然我们可以覆盖它, 在编辑器中更改它, 然后我们可以在C++文件中使用它｡

38
00:03:02,380 --> 00:03:06,490
‫我们要做的就是我们已经移动了变量距离｡

39
00:03:06,670 --> 00:03:09,190
‫我真的不想再看到这种情况了｡

40
00:03:09,190 --> 00:03:14,800
‫因此, 我将从头文件中删除visible anywhere属性和distance moved变量｡

41
00:03:15,250 --> 00:03:20,230
‫然后我将回到C++, 我们将不得不把它声明为一个局部变量.

42
00:03:20,230 --> 00:03:26,620
‫所以简单的方法就是在distance move前面加一个float声明它是tick内部的一个局部变量,

43
00:03:26,620 --> 00:03:32,590
‫这意味着我们知道每次使用它时它都是全新的｡

44
00:03:32,860 --> 00:03:35,800
‫所以如果我们走得太远, 现在我们需要逆转方向｡

45
00:03:35,800 --> 00:03:46,960
‫我们可以使用小于等于大于运算符, 这些运算符在蓝图中是节点｡

46
00:03:46,960 --> 00:03:51,490
‫但是现在我们可以把它们当作运算符来使用, 就像我们使用加法或乘法一样｡

47
00:03:51,790 --> 00:03:56,590
‫我们可以这样做, 好的, 我们已经移动了距离｡

48
00:03:56,740 --> 00:04:00,340
‫这是否大于移动距离？

49
00:04:00,340 --> 00:04:04,450
‫所以我们可以用大于符号, 就是右边的V形｡

50
00:04:04,750 --> 00:04:11,440
‫然后我们可以输入移动距离, 看起来我把它叫做移动距离, 但我认为它应该是移动距离｡

51
00:04:11,440 --> 00:04:13,510
‫所以我不小心多了一个D｡

52
00:04:13,510 --> 00:04:22,750
‫让我们把它从头文件中删除, 你会看到这个表达式返回一个布尔值, 所以我们可以在if语句中使用它｡

53
00:04:22,750 --> 00:04:33,970
‫我们可以说, 如果空格开括号, 我就把这个表达式剪切下来, 粘贴到括号里.

54
00:04:33,970 --> 00:04:41,830
‫这就是说, 如果移动的距离大于, 移动的距离, 那么我们需要反转方向.

55
00:04:41,830 --> 00:04:44,500
‫所以这就是我们做这条评论的原因｡

56
00:04:44,530 --> 00:04:48,310
‫我们要反转运动的方向, 要反转运动的方向｡

57
00:04:48,310 --> 00:04:50,350
‫我们有一个平台速度｡

58
00:04:50,350 --> 00:04:57,070
‫让我们把平台的速度设置为它自身的负值, 基本上就是反转它的方向｡

59
00:04:57,070 --> 00:04:59,860
‫所以平台速度等于｡

60
00:05:00,660 --> 00:05:02,810
‫负平台速度｡

61
00:05:02,820 --> 00:05:07,350
‫所以这基本上会翻转速度的箭头｡

62
00:05:07,590 --> 00:05:12,420
‫我会在这一行的末尾加上一个分号, 看看if语句是否真的能正常工作｡

63
00:05:12,450 --> 00:05:14,610
‫让我们进入编辑器并点击compile｡

64
00:05:14,610 --> 00:05:19,860
‫现在已经成功完成了, 我们可以继续点击播放, 看看会发生什么｡

65
00:05:20,130 --> 00:05:27,000
‫所以我希望它能像现在这样前进和后退, 这很好｡

66
00:05:27,030 --> 00:05:31,710
‫现在, 实际上是它稍微超过了它的起点｡

67
00:05:32,040 --> 00:05:33,390
‫的原因｡

68
00:05:33,390 --> 00:05:35,130
‫所以如果我们看一下, 这就是起点｡

69
00:05:35,130 --> 00:05:40,200
‫如果我按下播放键, 从我的球员站的这个角度看向一边, 你可以看到它从起点开始,

70
00:05:40,200 --> 00:05:44,790
‫在每个方向上都有相同的距离.

71
00:05:44,790 --> 00:05:53,160
‫这是因为当我们看这里计算的东西时, 移动的距离是从一个从不改变的起始位置开始的｡

72
00:05:53,160 --> 00:05:58,860
‫我们从不更新起始位置, 因此我们将向负方向前进｡

73
00:05:58,860 --> 00:06:03,210
‫然后我们将以同样的速度穿过它｡

74
00:06:03,360 --> 00:06:06,300
‫所以我不希望我的平台这样运作｡

75
00:06:06,300 --> 00:06:09,960
‫所以我要挑战你更新你的起始位置｡

76
00:06:09,960 --> 00:06:12,240
‫我们将在if语句中进行｡

77
00:06:12,240 --> 00:06:17,910
‫所以它只会在我们到达行程终点时发生,

78
00:06:17,910 --> 00:06:24,870
‫你要把它设置到当前位置, 这样我们就可以把起点重置到另一边, 然后我们就可以在相反的方向上旅行了｡

79
00:06:24,870 --> 00:06:28,370
‫因此, 测试结果, 看看它是否如您所期望的那样工作｡

80
00:06:28,380 --> 00:06:29,880
‫暂停视频, 开始体验｡

81
00:06:32,930 --> 00:06:33,440
‫好吧, 我会的

82
00:06:33,440 --> 00:06:34,160
‫欢迎回来｡

83
00:06:34,160 --> 00:06:39,290
‫所以我们在这里把速度反转后, 实际上是在之前还是之后并不重要,

84
00:06:39,290 --> 00:06:42,470
‫因为它们不会互相影响.

85
00:06:42,890 --> 00:06:52,040
‫我们将把起始位置设置为等于当前位置, 这实际上意味着在下一帧中移动的距离将为零,

86
00:06:52,040 --> 00:06:59,710
‫因为我们知道起始位置与其自身之间的距离将为零｡

87
00:06:59,720 --> 00:07:02,480
‫让我们回到Unreal, 点击编译按钮｡

88
00:07:02,480 --> 00:07:05,840
‫完成后, 让我们点击播放, 看看现在会发生什么｡

89
00:07:06,260 --> 00:07:09,080
‫所以我希望这件事能前后发展｡

90
00:07:09,080 --> 00:07:09,860
‫你去那里｡

91
00:07:09,860 --> 00:07:16,670
‫大约相同数量的单位总是回到它的起始位置, 而不是回到任何进一步, 这是梦幻般的｡

92
00:07:16,670 --> 00:07:18,260
‫这正是我想要的｡

93
00:07:18,260 --> 00:07:25,010
‫这节课就讲到这里, 我们已经学会了如何使用if语句和布尔表达式, 来实现这个目的,

94
00:07:25,010 --> 00:07:29,360
‫我们已经让它在我们的平台上来回移动｡

95
00:07:29,360 --> 00:07:30,290
‫好东西｡

96
00:07:30,380 --> 00:07:31,970
‫我们下节课再见｡

