设置门


在下列步骤中我们将创建一扇角色进入/离开触发框时自动开关的门。

创建项目

在这部分中我们先设置项目。

  1. Unreal Project Browser 窗口中创建一个 New Project,然后使用 Blueprint Third Person 模板。

    MatineeHowTo.jpg

  2. 启用 Include starter content 选项。

  3. 为项目命名。

  4. 上述步骤设置完成后,点击 Create Project 创建新项目。

放置门和触发器

在这步中我们放置门并为门放置触发器。

  1. Content Browser 中选择 Props 文件夹,找到 SM_DoorFrame 静态网格体。

    MHT1_DoorFrame.png

    如未发现 Props 文件夹,请重新查看 创建项目 步骤,确认已启用 Include Starter Content

  2. SM_DoorFrame 静态网格体上 单击左键 将其拖放进 关卡视口

    MHT_DoorFrameDragIn.jpg

  3. 在 Props 文件夹中找到 SM_Door 静态网格体并拖放进关卡视口。

    MHT_DoorDragIn.jpg

  4. 在 Content Browser 中再次找到 SM_Door 静态网格体,双击 将其在 静态网格体 查看器中打开。

  5. Details 面板中,在搜索栏中输入 Collision,将 Collision Complexity 设置设为 Use Complex Collision as Simple

    MHT_CollisionComplexity.jpg

    以上步骤将在门上应用碰撞机制。

  6. 在关卡视口中选择 SM_Door,前往 Details 面板。在 TransformRotation 设置中将 Z 轴值设为 -180

    MHT1_RotateDoor.png

    它将自动调整为 -179.99,为正常现象。

  7. 使用 平移(Translation) 控件将门放入门框内。

    MHT1_MoveDoor.png MHT1_MoveDoor2.png

  8. Modes 菜单的 Basic 标签下选择 Box Trigger 并将其拖放进关卡视口中的门框内。

    MHT_DragInBoxTrigger.jpg

  9. 在 Details 面板中的 Shape 部分选择 TriggerBox,将 X 轴的 Box Extent 数值改为 140

    MHT1_TriggerBoxSize.png

    注解:触发框 在门框里向里延伸出一部分,使门提前向里打开(在玩家到达之前)。

    玩家使用 蓝图 从任意一边进入 触发框,使门向不同方向打开。关于这类实例,请查阅 2.4 - 带触发器的门 中的内容范例。

  10. 门和触发器已放置好,下一步我们将添加一个 Matinee Actor 控制开关。

添加 Matinee Actor

在这步中,我们将添加 Matinee Actor 并设置 关键帧(Keyframes) 控制门的开关。

  1. 工具栏 菜单中选择 Matinee 并点击 Add Matinee 按钮。

    MHT_AddMatinee.jpg

  2. 在出现的 Matinee 撤销提示上点击 继续 按钮。

    MHT1_MatineeWarning.png

  3. Matinee Editor 窗口将打开。

    点击查看全图。

  4. Tracks 窗口(All 下的空白部分)中 单击右键,然后从快捷菜单中选择 Add New Empty Group

    MHT1_TrackContextMenu.png

  5. 窗口提示为出现的群组输入 New Group Name 时,为该群组命名(在此例中我们命名为 Door)。

  6. 最小化 Matinee 窗口,然后前往 主编辑器 中的 World Outliner 窗口并选择 SM_Door 将其高亮。

    MHT1_SelectDoor.png

  7. 返回 Matinee 窗口并在群组(门)上 单击右键 呼出快捷菜单,选择 Actors,然后选择 Add Selected Actors

    MHT1_AddDoorToGroup.png

    此操作将把 SM_Door Actor 添加至 Door 群组。

  8. 再次在群组(门)上 单击右键 呼出快捷菜单,然后选择 Add New Movement Track

    MHT1_AddMovementTrack.png

  9. 运动轨迹(Movement Track) 被添加后,将在时间 0.00 上沿轨迹自动添加新 关键帧(下图 1 所示)。

    MHT1_TrackExplained.png

    注解:图中 2 框内包含开始/结束标记(红色三角)、循环部分(绿色三角)和 时间条(Time Bar)(黑色条)。

  10. 时间条单击左键 将其拖至时间 0.50,然后按下 Enter 键添加一个新的 关键帧

    MHT1_AddKey.png

  11. 最小化 Matinee 窗口,在选中 SM_Door 的情况下返回关卡视口,按下 E 键进入 旋转(Rotation) 模式。

    MHT1_RotateWidget.png

  12. 左键单击 旋转 控件的 蓝色 弧(控件会发生变化),向右旋转至 -90.0 度。

    MHT1_DoorOpen.png

  13. 返回 Matinee 窗,左键单击 红色箭头 结束标记,然后将其移至左边 0.50 的位置。

    MHT1_EndPointMoved.png

  14. Matinee 序列设置已完成。在下一步中,我们将把 Matinee 和 触发器 衔接起来,完成操作。

Matinee触发器 衔接起来

在这步中我们将把 Matinee触发器 衔接起来,达成角色进入触发器时门自动打开,角色离开触发器时门自动关闭的效果。

  1. 工具栏 菜单中选择 Blueprints 并点击 Open Level Blueprint 按钮。

    MHT_OpenLvlBlueprint.jpg

  2. 最小化 关卡蓝图(Level Blueprint),然后在 关卡视口World Outliner左键单击 MatineeActor 选中。

    MHT1_MatineeSceneOutliner.png

  3. 打开 关卡蓝图 窗口,在 事件图表(Event Graph)单击右键,在快捷菜单中选择 Add Reference to MatineeActor 选项。

    MHT_MatineeReference.jpg

  4. 此操作将把 MatineeActor 添加至 关卡蓝图事件图表

    MHT1_MatineeAddedToBP.png

  5. 最小化 关卡蓝图(Level Blueprint),然后在 关卡视口World Outliner左键单击 TriggerBox 选中。

    MHT1_TriggerBoxSceneOutliner.png

  6. 打开 关卡蓝图 窗口,在 事件图表单击右键,然后在快捷菜单中的 Add Event for TriggerBoxCollision 下方选择 Add OnActorBeginOverlap 选项。

    MHT1_AddOnBeginOverlap.png

  7. 再次在 事件图表单击右键,重复之前步骤(选择 Add OnActorEndOverlap 选项除外)。

    MHT1_AddOnEndOverlap.png

  8. 事件图表左键单击 MatineeActor 节点并 拖动 输出引脚(蓝色圆圈)呼出快捷菜单,然后在搜索框中输入 Play 并选择 Play 选项。

    MHT1_DragOffPlay.png

  9. 再次 拖动 MatineeActor 节点,在快捷菜单的搜索框中输入 Reverse 并选择 Reverse 选项。

    MHT1_DragOffReverse.png

  10. 找到 OnActorBeginOverlap 节点,拖动 执行(Execute) 输出引脚并将其和 Play 节点的输入引脚连接起来。

    MHT1_ConnectOverlapToPlay.png

  11. 重复上述步骤,把 OnActorEndOverlap 节点的输出引脚和 Reverse 节点的输入引脚连接起来。

    MHT1_BlueprintConnected.png

  12. Level Blueprint's Toolbar 菜单中,点击 Compile 按钮。

    MHT1_ClickCompile.png

  13. 蓝图现已完成,触发框 已和 Matinee Actor 衔接起来。

  14. 最小化关卡蓝图,然后在主工具栏中点击 Play 按钮即可在编辑器中进行游戏。