4. 将信息从关卡传递到角色

在这一步中,我们将使用关卡蓝图获取我们的生成点位置,并将一个位置传递到我们的角色蓝图。

Windows
MacOS
Linux
  1. 在编辑器主视图的工具栏中,单击 蓝图(Blueprints) 按钮,然后选择 打开关卡蓝图(Open Level Blueprint)

    OpenLevelBlueprint.png

  2. 在图表中,右键单击 并添加一个 事件开始播放(Event Begin Play) 节点和一个 获取玩家角色(Get Player Character) 节点。

    GetPlayerCharacter.png

  3. 拖出 获取玩家角色(Get Player Character)返回值(Return Value),然后添加一个 转换为第一人称角色(Cast To FirstPersonCharacter) 节点。

    CastToNode.png

    在这里我们使用 转换 节点先获取玩家角色,然后获取该玩家使用的角色蓝图(在这个示例中名为 FirstPersonCharacter,我们将在其中设置可操作角色的其他脚本)。通过使用转换节点,我们可以访问玩家角色的蓝图和其中的变量、事件和函数。

    有关 转换 的更多信息,请参见蓝图中的转换文档页面。

  4. 按下图所示连接节点,然后从**转换为(Cast To) 节点拖出 返回值(Return Value),选择 提升为变量(Promote to variable)**。

    PromoteToVariable.png

    我们将要创建一个变量,其中存在对玩家使用的 FirstPersonCharacter 蓝图的引用,这样我们就不必每次都使用转换为节点来获取它了。如果对事件开始播放节点进行此操作,以后可以节省时间。

  5. 选择提升的变量,然后在 细节(Details) 面板中,将它重命名为 MyCharacter

    RenamedMyCharacter.png

  6. 拖出 MyCharacter 节点的 返回值(Return Value),然后添加 指定获取生成位置(Assign Get Spawn Location) 节点。

    AssignSpawnLocation.png

    这就是我们创建的 事件调度器。当你选择它时,还会添加两个节点。

    如果你在列表中没有看到此节点,请确保在 FirstPersonCharacter 蓝图中单击 编译(Compile),然后重试。

  7. 确保从 绑定事件(Bind Event) 连接新添加的节点。

    ConnectAddedNodes.png

    现在,当系统在我们的角色蓝图中调用 GetSpawnLocation 时,也会调用这个新的自定义事件。

  8. 按住 Control 并从 MyBlueprint 窗口拖入 MyCharacter 变量,然后从其拖出,添加 设置生成位置(Set Spawn Location) 节点。

    SetSpawnLocation.png

  9. 回到编辑器主窗口,在 世界大纲视图 中,搜索 目标点,然后按住 Ctrl 并单击每个目标点,将它们全部选中。

    SelectAllTargetPoints.png

  10. 回到 关卡蓝图,在图表中 右键单击,然后选择 创建对3个所选Actor的引用(Create References to 3 selected Actors)

    AddReferences.png

  11. 在图表中 右键单击,然后添加 设置数组(Make Array) 节点,将每个 目标点 连接到它。

    MakeArray.png

    你可以单击 添加引脚(Add Pin) 按钮来添加更多引脚。此数组将会存储我们可以访问的一系列目标点。

  12. 数组(Array) 引脚拖出,添加 获取(Get) 节点。

  13. 获取(Get) 拖出,添加一个 范围内的随机整数(Random Integer in Range) 节点,并将 最小值 设置为“0”,最大值 设置为“2”。

    GetNodeAdded.png

    在这里我们将获取一个随机的目标点,用作我们的生成点。如果你有更多生成位置,可以将它们添加到数组,并增大“范围内的随机整数(Random Integer in Range)”节点的 最大 值来包含它们。

  14. 获取(Get) 节点拖出,添加 获取Actor变换(Get Actor Transform) 节点,然后将它连接到 设置生成位置(Set Spawn Location) 节点。

    你的完整脚本应该和上面的内容类似,单击可查看大图。

我们在这个页面上已经做了很多工作!我们使用了一个 转换(Cast) 节点访问我们的角色蓝图,然后将一个自定义事件绑定到了其中的事件调度器。这样一来,每当调用事件调度器时,我们都可以在关卡蓝图中触发自定义事件。然后我们随机获取生成位置之一,将它以生成位置变量的形式传递回我们的角色蓝图(它将用作生成石头的位置)。

在下一步中,我们将使用从一个名为 OnHit 的事件引出的绑定事件,使我们的石头能够被射击摧毁(在石头被击中时)。

标签

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

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

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

发表反馈意见