‫你好, 欢迎｡
‫在这节课中, 我们将使用光线跟踪来修复这些错误, 以便我们可以杀死角色｡
‫他们不会自杀的, 我们可以通过破坏他们的太空舱, 从他们去过的地方跑过去｡
‫让我们来看看如何实现这一点｡
‫所以我们现在有一些奇怪的错误｡
‫所以我们有一个敌人的AI看起来像是在向自己的脸开枪, 你可以看到它很快就会像这样躺在地板上死去｡
‫但不仅如此, 它还在继续射击, 因为它已经死了｡
‫所以我们要逐步解决其中的一些问题｡
‫让我们看看是怎么回事｡
‫首先, 枪击本身的面部, 这可以很容易地看到发生了什么｡
‫如果我们进入我们的枪CP, 看看它是如何工作的, 我们现在正在做这条线, 逐通道跟踪,
‫以找到命中结果, 我们正在从玩家视口的位置开始做, 对不起,
‫视点｡
‫我们已经讨论过的人工智能, 它将在眼睛水平的某个地方｡
‫这就是追踪的起点｡
‫你可以看到这里可能有一点问题｡
‫如果你从他的眼睛开始追踪, 你会击中这个胶囊｡
‫事实上, 我们自己也有这个问题｡
‫唯一的区别是, 因为我们在摄像机的视角,
‫肩膀的视角, 所以我们基本上没有问题, 因为我们绕过了胶囊, 没有击中它｡
‫但是如果我们的摄像机在不同的位置, 我们也可以很容易地击中我们自己的太空舱｡
‫那我们该怎么阻止呢？
‫所以如果我们回去定义它, 我们将创建一个struct,
‫F碰撞查询参数, 我将调用params, 然后我们可以添加一些参与者, 这些参与者应该作为我们行的一部分被忽略｡
‫Trace我们通过执行params, 点add, 忽略, 忽略的参与者来实现, 那么我们应该忽略哪些参与者呢？
‫第一个就是枪｡
‫所以这个和第二个是所有者——｡
‫所以params add忽略了actor get所有者｡
‫所以基本上枪的主人不应该被自己的枪击中｡
‫我的意思是, 很明显, 你知道, 你可能想能够击中自己的棋子与枪, 但然后, 不,
‫不是在这种情况下｡
‫因此, 我们要传递的参数作为最后一个参数, 逐通道跟踪行, 然后保存并构建,
‫看看是否有效｡
‫理想情况下, 如果我们点击播放, 我们会看到,
‫粒子效应作用在我们的胶囊上, 作用在我们的播放器上, 最终我们的生命值会降到零, 我们会四肢伸开躺在地板上｡
‫我们走吧｡
‫躺在地板上｡
‫我们好像失败了｡
‫我不知道我们真正的球员去了哪里, 但我们仍然在地板上｡
‫但这里有另一个错误｡
‫你可以看到他还在向我们射击, 他还在射击, 击中了一个太空舱｡
‫同样的事情也发生了｡
‫如果我要杀了这个人, 那就杀了他｡
‫你去那里｡
‫到了那里｡
‫如果屏幕上没有可以指向的东西, 那就更难了｡
‫但你能抓到他｡
‫但他还在开枪还在向我开枪｡
‫我们还可以看到他的胶囊仍然是活动的｡
‫所以当我们的角色被杀的时候, 我们有几件事要做, 包括AI和玩家｡
‫现在我们来看看射击角色CP, 看看我们的take damage函数｡
‫我们基本上想在这里添加一个if语句｡
‫我们要说的是如果死了｡
‫所以基本上我们最后一次受到了伤害｡
‫我们死定了｡
‫我们得做点什么｡
‫我们需要做些清理工作｡
‫我们需要做的第一件事是将控制器与该角色分离｡
‫控制器不再负责此角色｡
‫角色已经死了｡
‫你不能做任何事阻止我们射击｡
‫所以人工智能死了就不会再开枪了｡
‫这有点道理｡
‫此外, 我们再也不能尝试在世界上四处走动｡
‫所有这些都将通过从控制器挂起销毁中分离来禁用｡
‫我们就这么办｡
‫接下来我们要关闭胶囊碰撞｡
‫我们将执行get capsule组件, 然后需要在顶部执行哈希include.
‫对于胶囊组件｡
‫那么如何包括那边的组件和胶囊组件呢？
‫然后向下滚动到我们的承受伤害｡
‫我将执行一个箭头操作符, 然后我们将执行一个启用碰撞的设置｡
‫所以我们想将其设置为未启用｡
‫这就是为什么我们要做一个设置碰撞启用, 奇怪的是｡
‫所以它将启用E碰撞, 冒号, 冒号, 没有碰撞｡
‫所以我们把太空舱对撞机设为无碰撞状态, 这应该能帮我们解决问题｡
‫好吧, 我会的
‫所以我们要继续构建, 看看这是否有帮助｡
‫至少编译是成功的｡
‫我们去玩吧｡
‫所以他向我开枪｡
‫我可以一枪打死他｡
‫我们走吧｡
‫他已经死了
‫我可以越过他的太空舱, 我不再与它相撞｡
‫你也可以看到他不再开枪了, 这太棒了｡
‫看看他会不会杀了我们｡
‫有什么行为？
‫所以我们只需要等十发子弹｡
‫你可以看到我像他一样躺在地上死了他一直朝我开枪｡
‫没关系, 我会的
‫他不再撞上一个空的对撞机, 我也不能再控制我的相机了, 因为我死了｡
‫太棒了｡
‫所以我们已经有了第一人称射击游戏的基础知识｡
‫我们有敌人跟踪我们, 向我们射击, 我们可以向它射击｡
‫我们俩都有健康｡
‫我们两个都可以死｡
‫接下来就是设置一些游戏结束条件, 这样我们就可以向玩家显示一条漂亮的消息, 告诉他们如果你杀死了关卡中的所有玩家,
‫你就输了或者赢了.
‫这将是下节课的主题｡
‫所以你在那里｡