‫你好, 我是
‫欢迎光临｡
‫在这节课中, 我们将使抓取器更加可靠｡
‫我们还将使它能够放下一个抓取的组件, 这样我们就可以把它扔来扔去, 通常会让它更有用一些｡
‫让我们深入了解一下这是如何实现的｡
‫现在,
‫我们经常不能拿起这个石像鬼的原因是, 为了性能目的而模拟物理的组件在静止一定时间后会进入睡眠状态｡
‫这就是我们所看到的｡
‫这个石像鬼物理模拟将进入睡眠状态, 当我们用物理句柄连接到它时, 它不会被唤醒｡
‫所以我们需要学习的是当我们用球体轨迹击中它时唤醒它｡
‫现在, 让我们来看看我们已经看到的基本组件文档｡
‫you原语组件是我们的命中结果返回的东西, 但实际上是一个原语组件｡
‫因此, 在文档中这里说, 基本体组件是一个场景组件,
‫它包含或生成某种几何体, 并被渲染或用作碰撞数据｡
‫所以一般来说, 基本组件是可以模拟物理的组件｡
‫所以我们可以期望在这里找到一些物理模拟的方法｡
‫我要找的是一个包含关键字wake的函数.
‫我们将浏览几个函数, 直到找到一个可以唤醒所有刚体的函数｡
‫刚体本质上是一个物理学术语, 用于表示模拟物理学的对象｡
‫所以你可以看到它有一个空洞｡
‫返回类型不接受任何参数｡
‫所以当我们试图连接到它的时候, 我们应该可以调用它｡
‫所以如果我们在if语句中抓取一个CP, 我们已经找到了这个组件, 我们就要抓取它了｡
‫我们首先要做的是, 创建一个变量来存储这个原始组件｡
‫所以我们有一个你的原语组件指针, 叫做hit component set, 它等于hit result.
‫get组件.
‫然后使用这个点击组件指针, 我们可以用箭头唤醒所有刚体, 然后把括号和分号放在最后｡
‫所以这应该只是给予那个组件一个踢, 唤醒它, 让它响应物理句柄｡
‫现在, 让我们替换一下我们已经完成的点击结果｡
‫不要在物理句柄调用中获取组件来获取组件位置, 因为我们现在有了一个变量, 当完成时,
‫让我们重新编译｡
‫让我们继续, 点击播放, 让石像鬼坐在地板上一点点, 现在让它去睡觉,
‫然后尝试拿起它｡
‫你会注意到, 我们没有问题, 拿起它, 让它躺在地板上, 无论什么｡
‫它会很好, 唤醒那些物理刚体, 开始模拟它们, 这样它就可以被举起和抓住｡
‫现在,
‫你可能已经注意到, 我们目前还不能释放物理句柄, 所以这将是你在释放函数中的挑战｡
‫所以你要调用物理句柄上的release组件｡
‫这是物理句柄指针上的一个函数｡
‫你要先检查我们是否有被抓的组件｡
‫所以如果你得到一个grab组件, 它返回一个指向grab组件的指针, 如果物理句柄当前没有抓取任何东西,
‫那么指针将为空.
‫所以你可以用它来检查我们是否有任何东西, 只有当我们正在抓取东西的时候才释放｡
‫作为奖励, 你可以去看看我们是否能重新设定目标｡
‫只有当我们抓住的东西, 但看视频, 并有一个去｡
‫欢迎回来｡
‫所以我们进去喝杯酒吧｡
‫即将进入释放功能并删除释放日志｡
‫在这里我们要放一个if语句, 我们要说, 现在我们要掌握物理句柄｡
‫首先, 我们要做一个物理句柄组件指针, 我们称之为物理句柄,
‫并将其设置为等于物理句柄｡
‫如果物理句柄等于空指针, 我们就继续返回, 因为我们不能做任何事情,
‫释放任何东西｡
‫如果我们根本没有物理句柄, 那么我们要检查当前是否持有任何具有物理句柄的东西｡
‫如果, 比如说, 如果物理句柄箭头被抓住了, 组件括号不等于空指针,
‫那么在if语句的主体中,
‫意味着我们已经抓住了一些东西, 那么我们要做一个物理句柄箭头释放组件, 它会释放它, 顾名思义｡
‫有一件事我在这里的代码中没有做, 但它可能值得添加到你的代码中, 那就是在我们发布组件之前,
‫值得继续调用get grab components, 然后添加弱的所有刚体,
‫就像我们在抓取组件之前所做的那样｡
‫因为如果我们要增长一个组件, 而一小段时间不到处移动, 它也可能进入休眠状态｡
‫所以释放它也无济于事｡
‫因此, 这是值得添加的, 因为它会捕捉到这种情况,
‫如果我们有一个当前没有抓取任何内容的物理句柄, 我们不想设置tick中的目标位置｡
‫在tick组件中, 我们将放置一个if语句, 它将完全相同｡
‫它会说物理句柄箭头被抓取的组件不等于空指针｡
‫然后在if语句的主体中, 我们将把目标位置的计算和设置目标位置也放在那个物理句柄中｡
‫让我们重新编译并测试一下｡
‫我们继续按播放键｡
‫试着抓住石像鬼｡
‫然后如果我放开鼠标, 它又会掉到地板上｡
‫所以, 它似乎不受它是醒着还是睡着的影响｡
‫我们似乎在唤醒它, 无论我们是否每次都在拿起它, 本质上｡
‫所以这似乎是完全按照我希望的那样工作｡
‫它没有卡住｡
‫感觉刚刚好｡
‫唯一有点奇怪的是, 当我进入它的时候, 你可以看到它在奇怪地抖动因为它实际上是在和播放器碰撞.
‫现在, 我们可以稍微修复这个问题, 方法是在细节窗格中转到我们的石像鬼,
‫选择所有类别, 向下滚动到碰撞, 然后查看我们的自定义碰撞预设, 再向下查看对象响应｡
‫稍后我们将对此进行详细介绍｡
‫有一个兵对象响应｡
‫这基本上就是说, 我应该和棋子相撞还是怎么着？
‫我应该如何应对典当？
‫我要把它设置成与兵重叠｡
‫这意味着如果它与我碰撞, 它基本上只是忽略它｡
‫还有一件事我们要做的是因为这实际上是由两个静态网格组成的, 它们有自己的碰撞设置｡
‫我要去土墩那儿｡
‫那是在滴水嘴下面的东西｡
‫这里我想把事情简单化｡
‫我打算让土堆部分, 没有碰撞｡
‫所以我要把它切换到无碰撞预设｡
‫然后我会继续按播放, 从地板上抓起石像鬼｡
‫现在你可以看到,
‫当我运行它的时候, 没有任何奇怪的小故障, 因为它没有试图与玩家碰撞网格碰撞｡
‫好东西｡
‫在这节课中, 我们学习了如何使抓取器更加可靠, 以及如何释放抓取组件｡
‫好东西｡
‫我们下节课再见｡