使用摄像机组件

介绍了如何为角色类添加摄像机组件,以及如何将摄像机用于关卡内的任何Actor上。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

在本教程中,你将为一个 角色 类添加摄像机组件。摄像机为游戏提供了一个观察视角,可以绑定到关卡中的任何角色上,包括可操控角色和不可操控的Actor。

选择实现方法:

Blueprints

C++

创建角色蓝图

  1. 首先,点击 新建(New) > 游戏(Games) > 空白(Blank) > 蓝图(Blueprint) 创建名为 CameraComponents 的项目。

  2. 内容浏览器(Content Browser) 中点击 添加/导入(Add/Import) 按钮新建蓝图 角色(Character) 类,将其命名为 BP_CameraCharacter

    AddCharacterBP.png

  3. 内容浏览器(Content Browser) 中双击 BP_CameraCharacter 打开 类默认值(Class Defaults)

  4. 选择 网格体(Mesh) 骨骼网格体组件,然后从 组件(Components) 选项卡中点击 添加组件(Add Component),从下拉菜单中选择 箭头(Arrow),并将其重命名为 CameraRShoulderLocation

    AddComponent1.png

    箭头组件(Arrow Component) 是一种 场景组件(Scene Component),可渲染带线条的简单箭头,用于指示朝向。 详见关于

    [工具控件](understanding-the-basics\components\utility-components)
    的文档。

  5. 选择 CameraRShoulderLocation 箭头组件,从细节(Details)面板导航到 变换(Transform) 类别,将 位置(Location) 设置为(-30,0,150),将 旋转(Rotation) 设置为(0,0,90)。

    CameraRShoulderTransform.png

  6. 选择 网格体(Mesh) 骨骼网格体组件,然后从 组件(Components) 选项卡中点击 添加组件(Add Component)。从下拉菜单中选择 箭头(Arrow),并将其重命名为 CameraOriginLocation

    AddComponent2.png

  7. 从组件(Components)选项卡中选择 CameraOriginLocation 箭头组件,然后在细节(Details)面板中导航到 变换(Transform) 类别,将其 位置(Location) 设置为(0, -120, 150),将 旋转(Rotation) 设置为(0,0,90)。

    CameraOriginLocation.png

    CameraOriginLocationCameraRShoulderLocation 附加到 骨架网格体组件(Skeletal Mesh Component),以提供摄像机组件将在何处切换其视点位置的可视化表示。

  8. 组件(Components) 选项卡中,选择 网格体(Mesh) 组件并导航至细节(Details)面板。从网格体(Mesh)类别中选择骨骼网格体,并从下拉菜单中搜索并选择 TutorialTPP

    SettingSkeletalMesh.png

    如果下拉菜单中没有列示任何选项,点击 查看选项(View Options),勾选 显示引擎内容(Show Engine Content) 框。

    ShowEngineContent.png

  9. 从细节(Details)面板导航到 变换(Transform) 类别,将网格体的 位置(Location) 设置为(0,0,-90),将 旋转(Rotation) 设置为(0,0,-90)。

    SkeletalMeshTransform.png

10.接下来,在 组件(Components) 选项卡中,点击 添加组件(Add Component) 按钮,选择摄像机(Camera)以添加 摄像机(Camera) 组件,并将该组件重命名为 CameraComp

![](AddComponent3.png)

11.导航到 细节(Details) 面板,将摄像机的 位置(Location) 值设置为(0, -120, 150)

![](CameraTransform.png)

12.编译保存

[INCLUDE:making-interactive-experiences/interactive-framework/camera/using-cameras/CameraComponents/CPP#CreatingCharacterCPP]

蓝图阶段成果

image alt text

本例中,摄像机附加到角色的骨骼网格体组件,以提供第三人称视角,但可以向任何蓝图Actor类添加摄像机组件,以用于任何已选定的摄像机视角。

[INCLUDE:making-interactive-experiences/interactive-framework/camera/using-cameras/CameraComponents/CPP#WorkInProgressCPP]

创建和绑定输入按键事件

创建角色蓝图类后,你需要设置一些脚本逻辑,以在两个不同的箭头组件位置之间转换摄像机组件的相对位置。

  1. 从BP_CameraCharacter的类默认值,点击 事件图表(Event Graph) 选项卡并在图表中 点击右键。从下拉菜单中选择 鼠标右键(Right Mouse Button) 以添加输入鼠标事件。

    RightMouseButton.png

    事件图表是移动摄像机的脚本逻辑发生之处。

  2. 导航到 我的蓝图(My Blueprint) 面板,然后从变量类别中 按住Ctrl键并点击 CameraComp 变量,将其副本拖动到事件图表上。

    CameraCompDragDrop.png

    创建CameraComp变量的副本后,可以设置属性或通过类方法影响摄像机组件。

  3. 导航回 我的蓝图(My Blueprint) 面板,然后从变量类别中 按住Ctrl键并点击 CameraOriginLocation和CameraRShoulderLocation箭头组件,将它们拖动到事件图表中。

    OriginLocationDragDrop.png

  4. 在事件图表中,点击CameraComp输出引脚并拖出引脚,然后从下拉菜单中搜索并选择 SetRelativeLocation

    SetRelativeLocation.png

    SetRelativeLocation函数允许你将摄像头组件移至选定位置。

  5. 点击 CameraRShoulderLocation 节点输出引脚并拖开引脚,然后搜索并选择 GetRelativeLocation

    CameraGetRelativeLocation.png

  6. Relative Location 节点的输出引脚连接到 New Location 节点,然后将 Right Mouse Button 事件节点的 Pressed 执行引脚连接到 Set Relative Location 节点的输入执行引脚。

    CameraRShoulderLocation.png

    按下 鼠标右键(Right Mouse Button) 后,摄像机的相对位置设置为箭头组件 CameraRShoulderLocation 的位置。

  7. 点击Camera Comp引脚并拖开引脚,然后从下拉菜单中选择 SetRelativeLocation

    CameraCompSetRelative.png

  8. 点击 CameraOriginLocation 节点输出引脚并拖开引脚,然后从下拉菜单中选择 获取相对位置(Get Relative Location)

    CameraOriginGetRelativeLocation.png

  9. CameraOriginLocationRelative Location 节点输出引脚连接到 New Location 引脚,然后从 Right Mouse Button 事件节点将 Released 执行引脚连接到 SetRelativeLocation 节点的输入执行引脚。

    CameraOriginConnectPins.png

10.编译保存

事件图表现在应类似于下图:

![](EventGraph.png)
[INCLUDE:making-interactive-experiences/interactive-framework/camera/using-cameras/CameraComponents/CPP#InputBindingsCPP]

完成后的蓝图

FinishedBlueprint.png

[INCLUDE:making-interactive-experiences/interactive-framework/camera/using-cameras/CameraComponents/CPP#FinishedCodeCPP]

设置游戏模式

创建并设置角色后,你需要修改游戏模式,以在点击运行(PIE)(Play (PIE))时生成角色。

  1. 内容浏览器(Content Browser) 中点击 添加/导入(Add/Import) 按钮新建一个游戏模式基础蓝图类,将其命名为 BP_CameraCompGameMode

    AddGameModeBaseBP.png

  2. 双击 BP_CameraCompGameMode,打开 类默认值(Class Defaults)。从 细节(Details) 面板导航到 类(Classes) 类别,从 默认Pawn类(Default Pawn Class) 下拉菜单中选择 Bp_CameraCharacter

    SettingDefPawnClass.png

    有关玩家控制器以及拥有Pawn Actor的其他文档,参见拥有Pawn

  3. 编译保存

  4. 从虚幻引擎工具栏中选择 编辑(Edit)>项目设置(Project Settings),导航至 地图和模式(Maps & Modes) 设置。从 默认模式(Default Modes) 类别中选择新创建的 BP_CameraCompGameMode 类。

    SettingDefaultGameMode.png

  5. 从关卡编辑器中点击 运行(PIE)(Play (PIE)) 按钮预览这些更改。

    PlayButton.png

[INCLUDE:making-interactive-experiences/interactive-framework/camera/using-cameras/CameraComponents/CPP#SettingUpGameModeCPP]

最终结果

image alt text

选择 运行(PIE) 后,你可以通过点击和释放鼠标右键,在两个摄像机视角之间转换。

下一步

熟悉了摄像机组件后,你可以继续学习弹簧臂组件。该教程将演示如何在移动到狭小空间时或物体将要挡住摄像机时,防止摄像机被遮挡。