‫你好, 欢迎｡
‫在这节课中, 我们将学习线迹和球面扫描,
‫这将帮助我们能够从代码中查询世界｡
‫我们还将设置一个碰撞通道, 这样我们就可以让对象对抓取器做出响应, 或者不对抓取器做出响应｡
‫让我们深入了解一下它是如何工作的｡
‫所以就我们的代码而言, 它几乎是盲目的｡
‫它不能告诉我现在在看什么, 也不能告诉我是在试着捡一个石像鬼,
‫还是我可能在试着捡完全不同的东西｡
‫就代码而言, 它站在一个漆黑的房间里, 什么也看不见｡
‫那么, 我们如何解决从代码中找出存在的问题呢？
‫好吧, 基本上, 我们需要打开一个远光灯手电筒, 并在某个方向看, 看看有什么｡
‫本质上是在黑暗场景中闪烁灯光｡
‫于是想象那隐藏在我们黑暗中的情景｡
‫我们这里有这些形状｡
‫我们可能要做的是, 取一个起点和一个终点, 从起点到终点画一条线,
‫看看这条线和什么重叠｡
‫这称为线路跟踪｡
‫所以当你进行一个线追踪时, 你基本上可以得到一个结果, 也就是所有的对象,
‫这些对象是线在它的路径上相交的｡
‫或者你可以只得到它遇到的第一个对象, 然后进行一些优化, 这意味着如果它遇到了一个对象,
‫它实际上根本不执行整个跟踪｡
‫这就是我们在第一人称射击游戏中经常做的事情, 比如开枪, 甚至像我们在这里做的那样, 捡东西｡
‫但是, 还有一种方法可以替代线跟踪, 因为线跟踪可能意味着我们必须非常精确｡
‫如果我们错过了像这个球体这样的物体几毫米, 它就不会被探测到｡
‫因此, 另一种方法是形状跟踪, 有时更具体地称为球体跟踪｡
‫如果这就是我们使用的形状, 或者更一般地说, 它实际上在代码中被称为几何轨迹｡
‫我们在这里要做的是从起点开始, 取一个球体, 顾名思义, 我们跟踪它, 或者扫过它,
‫实际上, 我们扫过这个球体, 直到终点.
‫如果它与沿着的任何东西相交, 那么这就是跟踪将触及的东西｡
‫比如说, 我们会把这个三角形和这个球体重叠起来, 因为我们扩大了搜索空间的半径｡
‫现在, 我们还可以向轨迹中添加一个额外的内容, 以使它们忽略场景中的某些形状｡
‫因为, 例如, 我们知道我们不能抓住这面墙,
‫也许我们希望能够抓住一些东西, 通过酒吧, 即使我们可能会击中酒吧, 因为我们做得很好｡
‫方法是使用跟踪通道,
‫这实际上创建了一个对象列表, 这些对象可以响应跟踪, 而其他对象可能希望完全忽略跟踪｡
‫现在, 让我们看看如何设置自己的跟踪通道, 以便拾取场景中的对象｡
‫现在, 要做这件事的地方就在设置中｡
‫项目设置｡
‫然后转到引擎和碰撞, 因为这是所有关于物体碰撞｡
‫在这里, 您可以看到我们有对象､ 通道和跟踪通道｡
‫我们特别关注跟踪通道, 因为我们要做的是弄清楚我们应该如何响应特定类型的查询｡
‫如果我们回到场景中, 点击一个对象, 向下滚动到一个叫做“碰撞”的区域,
‫这里有一系列的设置, 关于这个对象应该如何响应其他对象的碰撞｡
‫所以如果我们在有默认碰撞预设的那一刻开始, 如果我们看这里, 这里有很多不同的碰撞预设｡
‫但让我们转到自定义设置, 这样我们就可以看到碰撞设置中实际涉及的内容｡
‫我们有一个对象类型, 我们有它响应的查询类型, 这就是query｡
‫在这种情况下, 这是像线轨迹､ 球体轨迹和扫描等｡
‫然后是物理学｡
‫这就是物理学的模拟, 以及它是否会被其他物体反弹｡
‫但再往下, 你可以看到碰撞响应, 它分为轨迹响应和对象响应｡
‫这里是一些已经内置的跟踪通道｡
‫有一个可见性追踪频道｡
‫这基本上是所有可见的物体｡
‫还有一个摄像机跟踪通道, 它基本上是摄像机是否应该被允许穿透这个物体｡
‫但这并不太重要｡
‫这些是我们拥有的渠道类型, 我们可以对它们做出不同的回应｡
‫您可以在这里看到, 我们可以有一个块选项｡
‫有一个重叠, 这是一个中间的选择和一个完全忽略的选择｡
‫所以这就是我们感兴趣的｡
‫我们希望在这里添加一个新的跟踪响应通道｡
‫现在, 让我们转到项目设置, 转到跟踪通道｡
‫然后单击“添加新轨迹通道”｡
‫然后我们将在这里调用它, 我们可以选择默认情况下对象将如何响应此通道｡
‫我想让它默认忽略这个通道, 这样我们就必须明确地说, 一个对象响应这个跟踪通道｡
‫我必须点击“接受”, 返回到我们的地牢, 您可以看到我们实际上还没有显示新的跟踪响应｡
‫所以我们要做的就是关闭编辑器, 保存场景, 然后从新的项目文件重新启动｡
‫启动后, 让我们再次选择石像鬼, 然后进入碰撞设置｡
‫果然, 我们有了新的轨迹响应通道捕获器,
‫对于石像鬼, 我们希望它基本上能阻挡它, 这意味着它会阻挡视线,
‫因此它会显示在球体扫描或线轨迹中｡
‫好东西｡
‫希望现在您对线路跟踪和扫描有了更好的理解｡
‫我们下节课再见｡