‫你好, 欢迎｡
‫在这节课中, 我们将用C++创建一个新的组件, 这个触发框,
‫当我们进入凹室或者在凹室中放置任何物体时, 它会向我们报告｡
‫您可以看到, 我们在左手看到了一个小蓝图消息｡
‫要做到这一点, 我们必须了解重叠和阻塞以及不同的碰撞反应在虚幻中的表现｡
‫让我们深入了解一下｡
‫现在, 我们已经熟悉了跟踪通道的工作原理｡
‫我们知道, 您可以对场景中的不同对象进行轨迹响应, 例如这棵灌木｡
‫在这里, 您可以看到它对武器痕迹有一个忽略响应, 但它确实阻止了可见性痕迹｡
‫还有一个防弹玻璃的例子｡
‫它可以阻挡武器, 但允许通过和砖墙, 阻止两者的能见度｡
‫因此, 您可以看到该系统如何与跟踪通道配合使用｡
‫现在, 如果我们试图决定哪些物体可以互相重叠, 哪些可以通过, 哪些可以互相阻挡,
‫会发生什么？
‫这可能会变得有点复杂｡
‫我们已经看到了这一点, 当我们试图让石像鬼与我们的兵重叠｡
‫这就是它的工作原理｡
‫本质上, 我们使用这些对象类型｡
‫每个对象可以属于可以是特定对象的类型｡
‫这与C++中的类型系统不同｡
‫这些是碰撞类型｡
‫你可能有物体A和物体B, 在它们的设置中, 如果我们去看看我们的石像鬼的设置,
‫比如, 你可以看到它们有自己的物体类型｡
‫这是一个世界静态对象, 但再往下, 它们也有对其他类型对象的响应｡
‫所以你可以看到这个物体会阻挡其他的世界静力学, 它会阻挡其他的世界动力学, 它会覆盖棋子类型,
‫它会阻挡物理物体, 几乎阻挡所有其他类型｡
‫显然, 如果我们去找我们的BP球员, 棋子本身｡
‫看看它的胶囊组件, 看看细节, 向下滚动到它有一个碰撞预设｡
‫如果我们可以展开“兵碰撞”预设, 我们就不能编辑它, 但我们可以看到它在做什么｡
‫您可以看到它对世界静态有自己反应
‫所以它对世界静电的反应是屏蔽它｡
‫所以我们实际上有两个不同的选择｡
‫兵说我挡住了世界静态, 但石像鬼说我重叠了兵｡
‫那么应该怎么办呢？
‫这就是这个表格的用处, 如果你想在课堂参考资料中阅读全文,
‫我这里有这篇博文的链接｡
‫因此, 您可以看到, 它在两者之间的阻塞交互作用最小｡
‫如果物体A是兵, 我们会说, 嘿, 我应该挡住那个石像鬼, 但是石像鬼物体B, 它会说,
‫嘿, 我应该覆盖那个兵.
‫因此, 这两个函数中的阻塞最少, 并且它们会重叠｡
‫所以这确实意味着如果你想让两个东西互相阻碍, 他们都需要同意这是他们想做的｡
‫让我们看另一个例子｡
‫我们有一个对象类型的棋子, 它对其他棋子的对象反应是阻止它们,
‫而世界静态对象是阻止它们.
‫砖墙是一个世界静止的物体｡
‫它可以阻挡兵和阻挡世界静电｡
‫所以这两个观点是一致的｡
‫现在灌木也是世界静止的, 但它与棋子重叠｡
‫它很像我们的石像鬼, 但它阻挡了世界静力学｡
‫如果你往下看会发生什么, 兵会尝试穿过灌木丛, 它可以,
‫因为它采用了最少的阻碍选项,
‫即重叠, 它会生成一个重叠事件, 我们可以在代码或蓝图中连接到它,
‫而它不能穿过砖墙, 它会再次生成一个击中事件, 我们可以在蓝图或C++中连接到它｡
‫那么我为什么要深入研究呢？
‫因为我想做的是把一个我们基本上看不见的物体放进这堵墙里, 这样我们就可以把石像鬼放进去, 当它发生的时候,
‫我们就得到一个事件｡
‫因此, 石像鬼会支撑一个事件, 并说, 嘿, 我有一些与我重叠｡
‫那么, 为什么所有这些都很重要呢？
‫因为我想放一个看不见的物体, 但会和石像鬼重叠, 让我们知道这个事实｡
‫然后我们可以从C++中查询它, 或者我们可以在Blueprint中获取事件｡
‫我们要做的是, 首先, 从这面地牢的墙壁上创建一个蓝图｡
‫我将单击详细信息窗格中的蓝图按钮, 创建一个新子类,
‫并将其命名为“哔”, 在“secret wall”下加下划线, 然后单击“选择”创建它, 并在主窗口中创建一个摘要,
‫其中包含一个mover｡
‫我还想在这里添加一个基本的组件, 叫做长方体碰撞｡
‫所以如果我们点击一个长方体碰撞, 你可以看到它是完全不可见的｡
‫它只是给你一些我们可以改变的盒子范围, 我们可以把它们变大, 这样我们把石像鬼放在盒子里的任何地方,
‫它都会接受它｡
‫我们可以看到这里有碰撞选项｡
‫我们有一个重叠所有动态作为默认, 但作为默认预设｡
‫但是, 如果单击“自定义”, 您可以看到, 我们可以更改对象类型,
‫也可以更改它对不同内容的响应方式｡
‫我认为最重要的是, 正如你所看到的, 它被设置为与大多数对象类型重叠,
‫这意味着即使它们没有被设置为与世界动力学重叠, 它也会重叠｡
‫它不会阻挡任何东西｡
‫我们可以把石像鬼放在这里｡
‫我将从场景中删除该组件, 因为我想在C++中创建一个新的组件,
‫该组件基于长方体碰撞｡
‫现在, 我想向大家展示一下,
‫如果我们将此框设置回默认预设, 即重叠所有动态, 我相信我们已经选中, 或者实际上已经选中生成重叠事件｡
‫然后, 我们可以进入事件图, 右键单击此处并查找重叠｡
‫在顶部右侧, 您可以看到一个附加组件开始与盒子重叠｡
‫如果我们单击该按钮, 实际上, 我们可以将box组件重命名为trigger area, 例如｡
‫所以基本上如果我们和触发区域重叠, 我们会得到一个和我们重叠的东西的属性列表, 这样我们就可以取｡
‫是重叠的｡
‫我们可以知道它的名字｡
‫所以get的显示名称就是节点的名称｡
‫然后我们可以打印结果字符串, 并将其连接到执行引脚, 然后我们可以继续单击“播放”｡
‫如果我们走到这个区域, 你可以看到它说哔哔声播放器是重叠的东西｡
‫现在我看不到那个区域, 因为太黑了｡
‫我现在要再次来到秘密墙, 发出哔哔声, 然后我会加入一个聚光灯组件, 我会把它放在这个小凹室里,
‫旋转它, 使其面朝下, 照亮我们想要放置物体的空间｡
‫现在在现场, 我们可以看得很清楚｡
‫现在我们按播放键, 然后走到那个凹室｡
‫如果我们把它重叠起来,
‫它会说哔哔声播放器重叠了, 我们可以用我们新制造的抓取器从这个单元格中抓取我们的石像鬼, 我们可以把石像鬼放在这个区域｡
‫然而, 它似乎并没有产生任何重叠事件, 这是因为正如我们所需要的, 有两个方面的碰撞｡
‫也有两个方面产生重叠事件｡
‫因此, 仅仅因为我们在盒子组件上启用了它, 并不意味着移动到它里面的滴水嘴实际上会提醒我们任何重叠事件｡
‫所以我们要做的就是去到石像鬼那里检查一下, 生成重叠事件｡
‫那么重叠事件就应该发生了｡
‫我们去把石像鬼抬起来, 带他到壁龛里, 把他插进去｡
‫现在我们有一个活动即将举行｡
‫当这种情况发生时, 石像鬼雕像确实被注册｡
‫现在, 我不想在这个特定的例子中使用蓝图事件｡
‫我想做的是把我们的触发区域组件转化成一个C++组件, 它可以计算石像鬼雕像是否已经存在了.
‫我们要做的是, 我们要去添加组件, 创建一个新的C++组件｡
‫作为父类,
‫我们将转到所有类并搜索框组件, 而不是选择活动组件或场景组件｡
‫你可以看到形状组件, 盒子组件, 我们想要的, 我们可以继续, 点击下一个｡
‫既然我已经向您展示了如何设置父类, 那么我想请您创建这个组件｡
‫因此, 您要将其命名为触发器组件, 并且您必须从我们创建的其他组件中复制一些内容,
‫因为它的设置方式不同｡
‫因为我们是从不同的父类派生的, 所以你必须复制你的类行｡
‫在创建触发器组件时, 该行基本上是空的｡
‫因此, 从您的抓取器或移动器中复制, 否则您将无法将组件添加到蓝图中｡
‫因此, 您应该使用这个新的触发器组件来替换我们当前的box组件, 并从开始Play中打印一些内容｡
‫同样, 它的big in play不会自动为您设置,
‫因此您必须从我们其他组件的头文件和C++文件中复制, 以便设置它｡
‫暂停视频, 开始体验｡
‫好吧, 我会的
‫欢迎回来｡
‫所以我把它叫做触发器组件｡
‫所有一个字和点击创建类｡
‫正如预测的那样, 类行括号内没有任何内容, 如果我们查看编辑器并转到BP秘密墙,
‫尝试添加此组件并搜索触发器, 您将看到没有任何内容出现｡
‫这样做的原因是, 如果我们继续抓一个点H, 看看它的use class行, 你会看到这里有一个写着bluepire
‫spawn able component的地方.
‫所以至关重要的是, 我们需要复制这个｡
‫它也有一个类组｡
‫我们也可以复制整个组件, 因为这允许我们在蓝图中创建此组件,
‫这样我们就可以将其粘贴为触发器组件的类行｡
‫另一个问题是,
‫如果我们使用grab, 您可以看到它正在运行, 它位于受保护的部分中, 我们可以复制开始play函数的定义,
‫将其复制到触发器组件中, 并将其放置在grabber中, 就在生成的主体下面｡
‫然后, 我们可以开始抓取CP, 看看有多大的参与定义｡
‫在这里, 你可以看到它有这种酷到超级大的发挥, 这实际上是重要的｡
‫所以我们要复制它, 转到触发器组件｡
‫我们将把你抓取一个冒号改为你触发的部件, 开始播放｡
‫在这里, 我们可以放入日志, 我们只需要编写一条简单的消息, 如trigger component
‫alive, 然后继续进行编译｡
‫这可能需要一点时间, 因为我们已经对头文件做了一些相当重要的更改｡
‫一旦完成, 我们就可以进入我们的BP秘密墙, 去添加和搜索触发器｡
‫在这里, 你可以看到我们有触发器组件｡
‫我们现在可以将其添加进去｡
‫我们可以删除之前设置的触发区域｡
‫只要继续删除它, 然后检查我们是否要删除它｡
‫它基本上会使我们创建的这个事件无效, 如果我们要查看,
‫我们可以检查触发器上的冲突是否设置为我们想要的｡
‫然而, 它被设置为重叠所有动态并生成重叠事件｡
‫最后, 我们需要替换的是这里的事件,
‫在这里我们将选择我们的触发器, 右键单击, 然后展开触发器碰撞的添加事件, 并添加组件开始重叠｡
‫我们之前用的就是这个｡
‫钩上活动针和钩上执行针前往地下城的水平｡
‫去把石像鬼捡起来, 试着把它插在壁龛里, 我们发现那不起作用｡
‫现在我们已经把触发器安装好了｡
‫让我们转到视口, 您可以看到, 实际上触发器并不是, 它还没有做得足够大｡
‫我们没有正确地定位它｡
‫因此, 我们将其定位在凹室的中心, 并增加长方体的范围属性,
‫以便捕捉我们在凹室区域内放置的任何内容｡
‫如果它稍微大一点, 给我们一个安全的空间, 我们可以进入地牢, 点击播放,
‫然后进入壁龛｡
‫果然, 它检测到英国石油公司的球员已经走进了那个凹室｡
‫好东西｡
‫在本课中, 我们已经学习了对象类型和对象类型响应的所有知识, 并使用这些知识来设置此触发器组件｡
‫我们下节课再见｡