﻿1
00:00:04,470 --> 00:00:05,160
‫你好, 欢迎｡

2
00:00:05,160 --> 00:00:11,220
‫在这节课中, 我们将设计我们的枪, 当我们按下鼠标键或扳机时,

3
00:00:11,220 --> 00:00:14,550
‫我们将得到一条日志消息｡

4
00:00:14,550 --> 00:00:20,370
‫这个日志消息是让许多其他东西从这个枪架构后面运行的第一步｡

5
00:00:20,370 --> 00:00:22,320
‫让我们来看看它是如何完成的｡

6
00:00:23,060 --> 00:00:28,300
‫所以我们希望这把枪最终能够射击, 这是它的核心｡

7
00:00:28,310 --> 00:00:33,000
‫为什么我们选择把枪作为我们射击架构的核心？

8
00:00:33,020 --> 00:00:39,540
‫正如我已经提到的, 我们希望能够支持不同类型的拍摄方法｡

9
00:00:39,540 --> 00:00:42,480
‫现在, 我们通常可以有哪些拍摄方法？

10
00:00:42,500 --> 00:00:49,700
‫还有直接射击, 它通常使用光线跟踪和直接视线来确定受害者是否被击中｡

11
00:00:49,700 --> 00:00:52,630
‫所以它会说, 好吧, 我能看到敌人｡

12
00:00:52,640 --> 00:00:55,610
‫它的那条视线从枪口到敌人都是清晰的｡

13
00:00:55,610 --> 00:00:57,980
‫它击中了他, 所以我们必须给他造成伤害｡

14
00:00:57,980 --> 00:01:01,400
‫否则, 如果我没有击中敌人, 它不会造成伤害｡

15
00:01:01,400 --> 00:01:02,750
‫这是一个非常简单的方法｡

16
00:01:02,750 --> 00:01:05,640
‫它并没有真正复制子弹的物理性质, 但也没有必要｡

17
00:01:05,660 --> 00:01:11,030
‫所以出于性能原因, 我们现在不使用火箭发射器或类似的东西, 它通常是一个非常慢的炮弹｡

18
00:01:11,030 --> 00:01:16,640
‫我们想看看炮弹在空中移动的效果, 时间延迟可能很重要, 在这种情况下,

19
00:01:16,640 --> 00:01:21,830
‫我们可能会产生炮弹,

20
00:01:21,830 --> 00:01:29,000
‫看看炮弹是否在5秒内击中, 或者我们可能会沿着不同的路线, 通过子弹投掷和步枪和狙击步枪进行长距离射击｡

21
00:01:29,000 --> 00:01:32,990
‫所以这一切都可能会改变, 这取决于我们的枪的实施｡

22
00:01:32,990 --> 00:01:36,220
‫现在, 我们将在本节中实施一个射孔枪｡

23
00:01:36,230 --> 00:01:38,840
‫这将是一个步枪, 直接射击类型的枪｡

24
00:01:38,840 --> 00:01:46,550
‫但是为了让这个架构开放给你扩展, 我们将让枪负责射击｡

25
00:01:46,550 --> 00:01:52,010
‫所以这意味着我们必须在我们的枪中引入一些射击架构｡

26
00:01:52,010 --> 00:01:52,760
‫所以我们有枪｡

27
00:01:53,090 --> 00:02:05,270
‫我们想创建一个公共函数, 它允许我们从射击者角色或者绑定输入的任何地方扣动扳机｡

28
00:02:05,270 --> 00:02:12,590
‫例如, 在敌人的情况下, 我们将从眼睛中扣动扳机｡

29
00:02:12,890 --> 00:02:15,590
‫所以让我们继续创造一个空白｡

30
00:02:15,590 --> 00:02:21,020
‫它不需要有一个返回类型的拉动触发器方法, 也不需要接受任何东西｡

31
00:02:21,020 --> 00:02:24,710
‫我们只需要知道我们想在这个画面里扣动扳机｡

32
00:02:24,710 --> 00:02:33,950
‫有了这些就足够了, 接下来我将使用控制移位P创建实现.

33
00:02:34,610 --> 00:02:40,160
‫然后在这里,

34
00:02:40,190 --> 00:02:48,560
‫我要做的就是放一个YUI日志, 我只是要让它警告你站出来, 然后把消息改为你被这样射中了, 太棒了｡

35
00:02:48,560 --> 00:02:53,120
‫这就是我们在角色DHCP中所称的｡

36
00:02:54,080 --> 00:02:56,080
‫所以这对你们来说是个挑战｡

37
00:02:56,090 --> 00:02:57,470
‫它是一些比较输入的绑定｡

38
00:02:57,470 --> 00:02:58,790
‫我们在这里做了很多输入绑定｡

39
00:02:58,790 --> 00:03:01,860
‫你已经有了很多输入绑定的例子｡

40
00:03:01,880 --> 00:03:02,990
‫来吧, 这样做｡

41
00:03:02,990 --> 00:03:09,290
‫要连接拍摄动作, 您必须在项目设置中为拍摄创建一个新动作｡

42
00:03:09,290 --> 00:03:17,120
‫把它绑定到你的键, 你的右触发器, 任何你想绑定它的地方,

43
00:03:17,150 --> 00:03:20,360
‫然后在角色设置玩家输入组件方法中绑定它来完成这个任务｡

44
00:03:20,360 --> 00:03:30,320
‫然后在绑定角色之后, 您应该能够从在角色上创建的函数中调用拉动触发器｡

45
00:03:30,320 --> 00:03:38,360
‫请记住, 为了设置绑定, 将一个函数放入角色, 而不是试图直接绑定到那把枪｡

46
00:03:38,360 --> 00:03:40,250
‫直接绑在枪上是行不通的｡

47
00:03:40,250 --> 00:03:42,920
‫你需要在里面放一个函数中介｡

48
00:03:43,370 --> 00:03:53,180
‫暂停一下视频, 我给予你们一点提示或者一个开始如果你们还在为创造中介函数的最后一部分而挣扎.

49
00:03:53,990 --> 00:03:56,840
‫提示来了如果你不想要提示, 现在暂停｡

50
00:03:56,840 --> 00:04:03,830
‫但是提示是我们要做类似这样的事情, 就是有一个新的私有函数, 叫做void,

51
00:04:03,830 --> 00:04:09,110
‫在C++中创建实现｡

52
00:04:09,110 --> 00:04:14,630
‫在这里我们调用了枪的方法.

53
00:04:14,630 --> 00:04:18,620
‫所以枪扣动扳机, 我们要用枪｡

54
00:04:19,340 --> 00:04:24,950
‫然后叫人扣动扳机, 从里面开枪｡

55
00:04:24,950 --> 00:04:26,420
‫而这就是你需要绑定的东西｡

56
00:04:27,350 --> 00:04:34,960
‫好的, 如果你想在那里拍摄, 那么再次暂停视频, 然后我们开始设置操作｡

57
00:04:34,970 --> 00:04:35,260
‫好吧, 我会的

58
00:04:35,270 --> 00:04:38,000
‫现在我们转到项目设置｡

59
00:04:38,000 --> 00:04:44,960
‫设置, 项目设置, 我们要停靠它, 进入输入, 我们要添加一个新的动作,

60
00:04:44,960 --> 00:04:47,570
‫我们将称之为拍摄｡

61
00:04:48,300 --> 00:05:00,870
‫然后我们将它绑定到鼠标左键和右触发器, 而不是右触发器轴｡

62
00:05:01,140 --> 00:05:02,310
‫右边｡

63
00:05:02,940 --> 00:05:03,990
‫只要扣扳机｡

64
00:05:04,200 --> 00:05:06,390
‫我以为这就是我的选择, 但我没有｡

65
00:05:06,580 --> 00:05:14,630
‫好了, 我们绑定了控制器和鼠标, 然后我们再绑定shooter角色中的轴.

66
00:05:14,640 --> 00:05:17,760
‫复制这个绑定轴进行跳跃｡

67
00:05:17,850 --> 00:05:18,780
‫我是说行动｡

68
00:05:18,780 --> 00:05:21,150
‫当然, 我总是会把这两个搞混｡

69
00:05:21,480 --> 00:05:24,930
‫我们都叫切换到射击轴｡

70
00:05:24,930 --> 00:05:32,790
‫按下的是我们想要的, 而不是绑定到跳转, 我们要绑定到一个字符拍摄代替｡

71
00:05:33,580 --> 00:05:36,340
‫就像这样, 让我们继续建造｡

72
00:05:37,120 --> 00:05:38,940
‫看样子已经成功了｡

73
00:05:38,950 --> 00:05:42,580
‫把它关上看看能不能用｡

74
00:05:42,580 --> 00:05:48,520
‫所以, 让我们退出游戏, 再次点击播放, 看看我们的输出日志｡

75
00:05:48,520 --> 00:05:50,590
‫最关键的是, 它发挥了作用｡

76
00:05:50,590 --> 00:05:51,250
‫是的, 我知道

77
00:05:51,280 --> 00:05:54,580
‫所以如果我点击鼠标按钮, 它就起作用了｡

78
00:05:54,580 --> 00:05:58,540
‫让我们来看看如果我用右手扣扳机是否会发生同样的事情｡

79
00:05:58,810 --> 00:05:59,200
‫是的｡

80
00:05:59,200 --> 00:06:01,720
‫右侧扳机也可以击发｡

81
00:06:01,720 --> 00:06:07,930
‫所以很明显, 日志消息并不是让你的玩家知道游戏中发生了什么事情的最好方式｡

82
00:06:07,930 --> 00:06:12,210
‫所以在下一节课中, 我们会考虑加入粒子效应来实现这一点｡

83
00:06:12,220 --> 00:06:13,210
‫我会看到你在那里｡

