让我们抛出一个分散注意力的硬币

203 阅读4分钟

由于我们的守卫能够探测到玩家,让我们想办法创造一个硬币,把它扔到场景中,让守卫短暂地分心,这样我们就可以从他们身边走过。首先,我们需要对我们的播放器脚本做一些补充,以便我们能有一个方法来触发硬币的使用。
由于我们要把它与我们的右键绑定,我们可以直接创建一个新的代码组来工作。首先,我们将需要几个变量来工作。

从这里,我们可以创建一个新的if语句来工作,以实例化我们的硬币,同时将音频剪辑附加到它。

由于我们使用的是导航网代理,所以我们要使用射线喷射,这样我们的硬币就能正确地粘在地板上。我们使用RaycastHit hitInfo来确定我们的鼠标在点击时的位置。有了这些代码,我们可以测试一下我们的硬币是否在场景中出现。

我们可以看到一堆硬币散落在地板上,所以我们知道点击会成功。然而,如果有无限的硬币供应,这就太容易通过了,所以让我们开始工作,把它限制在每次播放只有一个硬币。
为了限制使用,我们可以使用几个方法。如果我们想让玩家有多次机会,我们可以把它设置成整数值,并给玩家一个固定的硬币数量。然而,我们只是要把玩家限制在1个硬币上,所以在这种情况下,我们可以直接把它设置成一个bool。首先,我们需要在脚本中创建一个新的变量。

从这里开始,我们可以在脚本的硬币部分添加几块内容。

现在我们已经设置好了,我们可以在游戏中测试一下,看我们是否只在拼命点击鼠标右键时得到1枚硬币。

现在我们在硬币上设置了一个限制,现在是时候让硬币分心,把守卫的注意力拉走了。
为了达到这个目的,我们需要让作为硬币一部分的玩家脚本与我们的GuardAI脚本互动。首先,我们将创建一个新的空洞,并附上我们需要与之互动的卫兵的部分。

首先,我们需要通过标签链接到我们所有的卫兵。从这里开始,我们需要创建一个foreach语句并连接到守护者NavMesh、Script和Animator。这样我们就可以告诉我们的守卫移动到硬币的位置,并覆盖守卫当前的移动轨迹,同时让他们向目标行走。接下来,我们将检查一下我们需要在我们的GuardAI脚本中添加哪些变化。

在我们的守卫脚本中,我们将需要添加一个bool,它将停止我们的守卫程序,使他们从每个航点移动。然后,我们将创建一个很长的距离,让守卫变得空闲,这样我们的守卫就不会只在一个小点上打架。同样,为了防止这个问题的发生,我们需要对守卫的导航系统做一些调整。

我们要做的是关闭自动刹车功能,这样卫兵就不会为一个小地方而争吵。如果我们觉得需要对停车距离做一些调整,我们也可以在这里调整。

现在,我们有了一个分散注意力的方法,将注意力拉到守卫的一个点上,让我们快速加入我们的玩家投掷硬币的动画。要做到这一点,我们需要调整球员的控制器。

我们能够做的是将投掷动作连接到任何状态,然后用适当的过渡参数将其连接到步行和闲置状态中。接下来,我们只需要在脚本的抛硬币部分添加一行代码。

有了这些,让我们在游戏中测试一下。

最后,我们将学习如何在触发器中加入一个声音片段,一旦触发就会激活。这是一个类似于改变摄像机的过程,但使用音频来代替。首先,我们需要创建一个新的脚本,让它从音频源中提取片段。

一旦我们设置好了,我们就可以回到我们的触发器上,把脚本和音频源都附加到它们上面。从这里开始,我们只需将每个触发器所需的音频片段附加到各自的音频源。

现在,我们已经设置好了硬币的分心,我们可以在游戏中进一步创造更多的障碍。


Let's Toss in a Distraction Coin》最初发表在《Nerd For Tech》杂志上,人们通过强调和回应这个故事继续进行对话。