﻿1
00:00:04,350 --> 00:00:05,340
‫你好, 欢迎｡

2
00:00:05,340 --> 00:00:11,250
‫在这节课中, 我们将学习线迹和球面扫描,

3
00:00:11,250 --> 00:00:15,450
‫这将帮助我们能够从代码中查询世界｡

4
00:00:15,450 --> 00:00:23,820
‫我们还将设置一个碰撞通道, 这样我们就可以让对象对抓取器做出响应, 或者不对抓取器做出响应｡

5
00:00:23,850 --> 00:00:25,980
‫让我们深入了解一下它是如何工作的｡

6
00:00:26,650 --> 00:00:29,950
‫所以就我们的代码而言, 它几乎是盲目的｡

7
00:00:29,950 --> 00:00:37,390
‫它不能告诉我现在在看什么, 也不能告诉我是在试着捡一个石像鬼,

8
00:00:37,390 --> 00:00:41,300
‫还是我可能在试着捡完全不同的东西｡

9
00:00:41,320 --> 00:00:46,390
‫就代码而言, 它站在一个漆黑的房间里, 什么也看不见｡

10
00:00:46,600 --> 00:00:51,790
‫那么, 我们如何解决从代码中找出存在的问题呢？

11
00:00:51,820 --> 00:01:00,160
‫好吧, 基本上, 我们需要打开一个远光灯手电筒, 并在某个方向看, 看看有什么｡

12
00:01:00,160 --> 00:01:02,740
‫本质上是在黑暗场景中闪烁灯光｡

13
00:01:02,740 --> 00:01:05,510
‫于是想象那隐藏在我们黑暗中的情景｡

14
00:01:05,530 --> 00:01:07,600
‫我们这里有这些形状｡

15
00:01:07,630 --> 00:01:15,520
‫我们可能要做的是, 取一个起点和一个终点, 从起点到终点画一条线,

16
00:01:15,520 --> 00:01:20,140
‫看看这条线和什么重叠｡

17
00:01:20,140 --> 00:01:22,480
‫这称为线路跟踪｡

18
00:01:22,780 --> 00:01:28,720
‫所以当你进行一个线追踪时, 你基本上可以得到一个结果, 也就是所有的对象,

19
00:01:28,720 --> 00:01:31,990
‫这些对象是线在它的路径上相交的｡

20
00:01:32,410 --> 00:01:38,170
‫或者你可以只得到它遇到的第一个对象, 然后进行一些优化, 这意味着如果它遇到了一个对象,

21
00:01:38,170 --> 00:01:41,180
‫它实际上根本不执行整个跟踪｡

22
00:01:41,200 --> 00:01:50,500
‫这就是我们在第一人称射击游戏中经常做的事情, 比如开枪, 甚至像我们在这里做的那样, 捡东西｡

23
00:01:50,770 --> 00:01:57,730
‫但是, 还有一种方法可以替代线跟踪, 因为线跟踪可能意味着我们必须非常精确｡

24
00:01:57,730 --> 00:02:02,240
‫如果我们错过了像这个球体这样的物体几毫米, 它就不会被探测到｡

25
00:02:02,260 --> 00:02:08,260
‫因此, 另一种方法是形状跟踪, 有时更具体地称为球体跟踪｡

26
00:02:08,260 --> 00:02:14,820
‫如果这就是我们使用的形状, 或者更一般地说, 它实际上在代码中被称为几何轨迹｡

27
00:02:14,830 --> 00:02:22,750
‫我们在这里要做的是从起点开始, 取一个球体, 顾名思义, 我们跟踪它, 或者扫过它,

28
00:02:22,750 --> 00:02:28,690
‫实际上, 我们扫过这个球体, 直到终点.

29
00:02:28,690 --> 00:02:35,000
‫如果它与沿着的任何东西相交, 那么这就是跟踪将触及的东西｡

30
00:02:35,020 --> 00:02:45,180
‫比如说, 我们会把这个三角形和这个球体重叠起来, 因为我们扩大了搜索空间的半径｡

31
00:02:45,190 --> 00:02:52,990
‫现在, 我们还可以向轨迹中添加一个额外的内容, 以使它们忽略场景中的某些形状｡

32
00:02:52,990 --> 00:02:57,820
‫因为, 例如, 我们知道我们不能抓住这面墙,

33
00:02:57,820 --> 00:03:03,580
‫也许我们希望能够抓住一些东西, 通过酒吧, 即使我们可能会击中酒吧, 因为我们做得很好｡

34
00:03:03,580 --> 00:03:09,790
‫方法是使用跟踪通道,

35
00:03:09,790 --> 00:03:16,930
‫这实际上创建了一个对象列表, 这些对象可以响应跟踪, 而其他对象可能希望完全忽略跟踪｡

36
00:03:17,410 --> 00:03:25,750
‫现在, 让我们看看如何设置自己的跟踪通道, 以便拾取场景中的对象｡

37
00:03:25,990 --> 00:03:28,990
‫现在, 要做这件事的地方就在设置中｡

38
00:03:28,990 --> 00:03:30,220
‫项目设置｡

39
00:03:30,220 --> 00:03:35,320
‫然后转到引擎和碰撞, 因为这是所有关于物体碰撞｡

40
00:03:35,410 --> 00:03:40,840
‫在这里, 您可以看到我们有对象､ 通道和跟踪通道｡

41
00:03:40,840 --> 00:03:50,500
‫我们特别关注跟踪通道, 因为我们要做的是弄清楚我们应该如何响应特定类型的查询｡

42
00:03:50,830 --> 00:04:00,280
‫如果我们回到场景中, 点击一个对象, 向下滚动到一个叫做“碰撞”的区域,

43
00:04:00,280 --> 00:04:08,590
‫这里有一系列的设置, 关于这个对象应该如何响应其他对象的碰撞｡

44
00:04:08,590 --> 00:04:17,080
‫所以如果我们在有默认碰撞预设的那一刻开始, 如果我们看这里, 这里有很多不同的碰撞预设｡

45
00:04:17,080 --> 00:04:24,220
‫但让我们转到自定义设置, 这样我们就可以看到碰撞设置中实际涉及的内容｡

46
00:04:24,790 --> 00:04:30,250
‫我们有一个对象类型, 我们有它响应的查询类型, 这就是query｡

47
00:04:30,250 --> 00:04:34,630
‫在这种情况下, 这是像线轨迹､ 球体轨迹和扫描等｡

48
00:04:34,630 --> 00:04:35,740
‫然后是物理学｡

49
00:04:35,740 --> 00:04:39,400
‫这就是物理学的模拟, 以及它是否会被其他物体反弹｡

50
00:04:39,790 --> 00:04:46,720
‫但再往下, 你可以看到碰撞响应, 它分为轨迹响应和对象响应｡

51
00:04:46,720 --> 00:04:50,590
‫这里是一些已经内置的跟踪通道｡

52
00:04:50,590 --> 00:04:52,660
‫有一个可见性追踪频道｡

53
00:04:52,660 --> 00:04:54,970
‫这基本上是所有可见的物体｡

54
00:04:54,970 --> 00:05:02,590
‫还有一个摄像机跟踪通道, 它基本上是摄像机是否应该被允许穿透这个物体｡

55
00:05:02,590 --> 00:05:04,060
‫但这并不太重要｡

56
00:05:04,060 --> 00:05:08,530
‫这些是我们拥有的渠道类型, 我们可以对它们做出不同的回应｡

57
00:05:08,530 --> 00:05:11,320
‫您可以在这里看到, 我们可以有一个块选项｡

58
00:05:11,320 --> 00:05:16,870
‫有一个重叠, 这是一个中间的选择和一个完全忽略的选择｡

59
00:05:16,870 --> 00:05:18,190
‫所以这就是我们感兴趣的｡

60
00:05:18,220 --> 00:05:23,110
‫我们希望在这里添加一个新的跟踪响应通道｡

61
00:05:23,110 --> 00:05:25,810
‫现在, 让我们转到项目设置, 转到跟踪通道｡

62
00:05:26,610 --> 00:05:29,430
‫然后单击“添加新轨迹通道”｡

63
00:05:29,460 --> 00:05:38,990
‫然后我们将在这里调用它, 我们可以选择默认情况下对象将如何响应此通道｡

64
00:05:39,000 --> 00:05:46,890
‫我想让它默认忽略这个通道, 这样我们就必须明确地说, 一个对象响应这个跟踪通道｡

65
00:05:46,950 --> 00:05:54,840
‫我必须点击“接受”, 返回到我们的地牢, 您可以看到我们实际上还没有显示新的跟踪响应｡

66
00:05:54,840 --> 00:06:01,410
‫所以我们要做的就是关闭编辑器, 保存场景, 然后从新的项目文件重新启动｡

67
00:06:01,410 --> 00:06:06,960
‫启动后, 让我们再次选择石像鬼, 然后进入碰撞设置｡

68
00:06:06,960 --> 00:06:12,510
‫果然, 我们有了新的轨迹响应通道捕获器,

69
00:06:12,510 --> 00:06:19,170
‫对于石像鬼, 我们希望它基本上能阻挡它, 这意味着它会阻挡视线,

70
00:06:19,170 --> 00:06:22,080
‫因此它会显示在球体扫描或线轨迹中｡

71
00:06:22,110 --> 00:06:22,710
‫好东西｡

72
00:06:22,710 --> 00:06:27,680
‫希望现在您对线路跟踪和扫描有了更好的理解｡

73
00:06:27,690 --> 00:06:29,580
‫我们下节课再见｡

