如何在蓝图中设置输入

本页面的内容:

概述

在本页中,您将创建一个简单人物并对其进行设置以便接收输入,之后将该人物分配到一个 GameMode,使之作为游戏过程中的默认 Pawn。 如果您熟悉人物设置或拥有一个要接受输入的人物(同时设置了一个使用该人物的 GameMode),您可以跳过人物创建部分,直接去新建输入并实施它们。

创建一个简单人物

在该部分中,我们将创建一个可对其分配输入的人物(如果您已经有一个 Character Blueprint,可以跳过这一步)。

在此示例中,我们将使用 Blank 项目模板并启用 Starter Content

  1. 在项目的 Shapes 中,Right-click Shape_NarrowCapsule 图形并选择 Asset Actions - Create Blueprint Using

    Input_1.png

    这就是我们将要控制的简单人物。

  2. Blueprints 文件夹中,打开新创建的蓝图,然后单击 FileReparent Blueprint 选项。

    Input_2.png

    我们需要将蓝图类型从 Actor 更改为 Character

  3. 在弹出的窗口内选择 Character 选项。

  4. 在蓝图窗口的右上角单击 Components 选项卡。

  5. Components 窗口下的 Components 选项卡中,单击 Add Component 并添加一个 Spring Arm

    Input_3.png

    Spring Arm 组件会尝试让其子对象与父对象之间保持一个固定距离,但如果发生碰撞,就会将子对象撤回,如果没有碰撞,则使之发生回弹。这里的子对象将是一个 Camera,所以我们将拥有第三人称视角。

  6. 选择 Spring Arm 后,在 Details 中搜索 rotation

  7. Camera Settings 中选中 Use Pawn Controller Rotation 选框。

    Input_4.png

  8. 再次单击 Add Component 按钮并添加一个 Camera,然后将其拖放到 Spring Arm 组件上。

    Input_5.png

    这样就可以将它指定为 Spring Arm 的子对象。

  9. 选择 Camera 后,将 LocationRotation 值(位于 Transform)设置为 0

    Input_7.png

  10. 选择 StaticMesh1 组件,然后在 Details 中将 LocationZ 值设置为 -90.0

    Input_6.png

  11. CompileSave,然后关闭蓝图。

创建一个可使用简单人物的游戏模式

我们已经创建了一个简单人物,现在需要创建一个 GameMode 并让它使用我们的新人物。

  1. Content Browser 中,单击 New 按钮,然后单击 Blueprint 选项。

  2. 在弹出的窗口内单击 Game Mode 按钮。

    Input_8.png

  3. 命名后打开 GameMode 蓝图并单击 Defaults 选项卡。

  4. Defaults 选项卡的 Classes 部分,单击 Default Pawn Class 下拉菜单并选择新人物。

    Input_9.png

  5. CompileSave,然后关闭蓝图。

  6. 在主编辑器窗口中,单击菜单栏上的 Edit 按钮并选择 Project Settings

    Input_10.png

    现在,我们要让我们的项目使用新建的 GameMode

  7. Project Settings 中,单击 Maps & Modes 选项。

  8. Maps & ModesDefault Modes 部分,单击 Default GameMode 下拉菜单并选择您的 GameMode

    Input_11.png

新建输入(Action/Axis Mappings)

以下步骤将指引您为项目添加新的 ActionAxis Mappings,然后您可以将其分配给您的人物。

  1. Project Settings 菜单的 Engine 中,单击 Input 选项。

  2. Bindings 中,单击 + 符号(位于 Action MappingsAxis Mappings 旁边)以重建下面的设置。

    Input_12.png

  3. 为空映射填入内容(如下所示)。

    Input_13.png

    您需要在这里为每一个映射命名,然后为其分配一个输入。请务必将高亮显示的 Scale 值设置为 -1.0,因为在累加坐标值的时候,Scale 充当了按键值的乘数(这可以让我们得到相反方向)。

在蓝图中实施动作/坐标轴映射

通过 Project Settings 创建输入后,您便可以从 Blueprint 内调用这些输入了。在这一部分中,我们将针对简单人物(或是您已有的人物)实施这些输入设置。

  1. 在您的项目中,打开要分配输入的 Character BlueprintShape_NarrowCapsule)。

  2. 在蓝图中,Right-click 图表上的任意位置,搜索 Turn,然后添加 Turn 坐标轴事件。

    Input_14.png

  3. 拖开 Axis Value 并搜索 Yaw,然后添加 Add Controller Yaw Input 节点。

    Input_15.png

  4. 在图表中 Right-click,然后添加 LookUp 坐标轴事件。

  5. 拖开 Axis Value 并搜索 Pitch,然后添加 Add Controller Pitch Input 节点。

    Input_16.png

  6. 在图表中 Right-click,然后添加 Jump 坐标轴事件。

  7. 拖开 Pressed 针并搜索 Jump 函数。

    Input_17.png

  8. 在图表中 Right-click,然后添加 MoveForward 坐标轴事件。

    Input_18.png

  9. 拖开 Axis Value 并添加 Add Movement Input 节点。

  10. 在图表中 Right-click,然后添加 MoveRight 坐标轴事件。

  11. 拖开 Axis Value 并添加 Add Movement Input 节点。

    Input_19.png

    事件添加完成,但我们还需要为每个事件指定方向。

  12. 在图表中 Right-click 并搜索 Get Control Rotation

    Input_20.png

  13. 拖开 Return Value 并添加一个 Break Rot 节点(用于将旋转分解为俯仰(Pitch)、偏航(Yaw)和横滚(Roll))。

  14. 拖开 Yaw 针并添加一个 Make Rot 节点(根据Pitch、Yaw和Roll做出旋转)。

    Input_21.png

  15. Right-click Make Rot 节点并选择 Break link to Break Rot (Yaw)

    Input_22.png

    我们要将 PitchRoll 归零,仅仅保留 Yaw

  16. Break RotYaw 连接至 Make RotYaw

  17. 拖开 Make RotReturn Value 并添加一个 Get Forward VectorGet Right Vector 节点。

  18. Get Forward Vector 连接至与 MoveForward 事件绑定的 World Direction

  19. Get Right Vector 连接至与 MoveRight 事件绑定的 World Direction

    Input_23.png

    具体顺序应当与上面类似。

  20. CompileSave,然后关闭蓝图。

  21. 在编辑器中运行。

现在,您应当可以用我们创建的胶囊人物(或是您选用的人物)在场景中四处移动或跳跃。