3.生成可射击岩石

在这一步中,我们将使玩家能够按下按钮以在生成地点之一生成可射击岩石。

Windows
MacOS
Linux

在这一步中,我们将设置使玩家能够按下按钮以生成可射击岩石的逻辑(加入已满足其他条件)。在我们的关卡中,我们已定义了一些生成点,并且为了得到其中一个生成点的位置,我们将使用 事件调度器(Event Dispatcher),它将在 关卡蓝图(Level Blueprint)(将在下一步中创建)中触发一个事件,以获取这些位置之一并将其发送给角色蓝图。

首先,让我们使玩家能够通过按键生成可射击岩石。

  1. 第一人称角色(FirstPersonCharacter) 蓝图中,右键单击 图表中的一个空白位置并添加一个 F 键事件。

    FKeyEvent.png

  2. 按住 B 并在图表中 单击 以创建 分支(Branch) 节点。

  3. 按住 Alt 并拖动到 IsActive 变量中,选中复选框,然后进行连接,如下所示。

    BranchAdded.png

  4. 按住 Control 并拖动到 IsActivePulls 变量中。

  5. IsActive 连接到 非布尔(NOT Boolean) 节点(非真),并将 Pulls 连接到 > 节点(设置为0)。

    TwoNodesAdded.png

    在旧版本引擎中,非布尔(NOT Boolean) 节点指的是 != 节点

  6. 将两个输出连接到一个 与(And) 节点,并将其输入到 分支(Branch)条件(Condition) 中。

    AndAdded.png

    这里我们建立了逻辑,以通过检查名为 IsActive 的变量是否为真以及玩家的 Pulls 计数是否大于0来确定玩家是否可以生成岩石。如果这两个语句都为真,我们将继续处理 分支(Branch) 节点的 真(True) 侧,并生成岩石(脚本的这一部分仍然需要设置,我们将在下面进行设置)。

  7. 按住 Alt 并拖动到 Pulls 变量中,并将其连接到 设置IsActive(Set IsActive) 节点。

  8. 按住 Control 并拖动到 Pulls 变量中,并将其连接到 整型 - 整型(Int - Int) 节点(设置为1)并连接到 设置Pulls(Set Pulls)

    PullsSet.png

  9. 单击 编译(Compile),然后从 设置Pulls(Set Pulls) 节点添加 重置射击次数(ResetShots) 自定义事件。

    CallCustomEvent.png

    您的设置看上去应与下图类似。

    ScriptBeforeEventDispatcher.png

    有关玩家何时可以生成岩石的逻辑已经设置,现在我们需要与关卡通信以获取生成位置。我们将通过使用 事件调度器(Event Dispatcher) 来实现这一点,该调度器将在按下 F 时被调用。关卡蓝图(Level Blueprint) 将侦听事件调度器,当它被调用时,将触发它自己的事件,该事件将获取一个生成点的位置,并将其传递回角色蓝图。

  10. 单击 我的蓝图(My Blueprint) 窗口中的 + 事件调度器(+ Event Dispatcher) 按钮。

    AddEventDispatcher.png

  11. 单击新的事件调度器,并按 F2 选中并将其重命名为 GetSpawnLocation

    RenameEventDispatcher.png

  12. 在图表中的 重置射击次数(Reset Shots) 函数后面,添加 调用GetSpawnLocation(Call GetSpawnLocation) 节点。

    CallEventDispatcher.png

    事件调度器随即添加,并通过节点右上角的信封图标表示。

    NewNodeAdded.png

  13. 关闭 GetSpawnLocation 节点,添加 从类生成Actor(Spawn Actor from Class) 节点。

    SpawnActorNode.png

  14. 生成Actor(Spawn Actor) 节点上,将 类(Class) 设置为 BP_Rock

  15. 同时在 生成Actor(Spawn Actor) 节点上,将 SpawnLocation 变量拖放到 SpawnTransform 引脚上。

    SpawnActorComplete.png

    我们的角色蓝图现在已被设置为生成可射击岩石,并将接收要生成岩石的 变形(Transform) 位置。

在下一个步骤中,我们将使用 关卡蓝图(Level Blueprint) 获取我们的一个生成点的位置,并在我们的角色蓝图的事件调度器被调用时将该信息传递给我们的角色蓝图(因此我们将从角色蓝图转到关卡蓝图,并返回角色蓝图,在这两者之间传递信息)。

标签

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见