跳转到正文

相机系统

作

作者

作者

创建时间: 2025年4月15日更新时间: 2026年10月19日

目录

设置相机系统组件

为你的角色添加GCMS_CameraSystemComponent,确保你的角色拥有弹簧臂和相机组件。

初始化相机系统组件

然后调用如下函数进行初始化:

你还需要在组件的细节面板中,指定一个默认的相机模式。

切换相机模式

只需要如下这一个API足矣。

创建相机模式

新建一个继承自GCMS_CameraMode的蓝图即可。推荐相机模式以CM_作为前缀。

默认参数

一个新建的相机模式,默认有如下的一些参数:

其中最值得注意的是Blending部分,你可以调整该相机模式的混合方式,时间等参数。

View是一个蓝图可读写的结构体类型变量,一个相机模式的主要目的就是在激活时更新这个View结构体,并作为该相机模式的“输出”。

编写相机模式逻辑

一个相机模式有如下几个函数供你重写。

轴心位置和旋转

其中PivotLocation和PivotRotation已经有默认实现,并提供了注释说明。一般情况下你不需要重写这两个函数。

如果你希望角色镜头的触发点和特殊点

生命周期函数

你可以通过覆写OnActivation和OnDeactivation来执行一些初始化和清理的工作,类似于Actor的Beginplay和Endplay。

更新相机模式View

一个相机模式最核心的部分就在于:你需要在OnUpdateView中根据你的实际游戏逻辑,更新相机模式View。

你可以通过AssociatedCamera和AssociatedSprintArm,以及TargetActor获取相机模式以外的信息,并基于它们提供的信息来自定义你的逻辑。

OnUpdateView会在该相机模式激活期间每帧执行。

可复用的相机模式

GCMS 提供可继承的代码结构,供项目创建和扩展相机模式。当前 GenericGame 配套项目还包含可检查的 Blueprint 相机示例;它们属于项目 Content,而不是代码插件自带的 Content。部分示例带有更完整的默认参数,可直接作为项目适配起点。

比如这个适用于第三人称游戏的相机模式:

它提供了更多的默认参数,允许你通过曲线值或者固定值驱动相机模式View的参数。

你可以以它为父类创建更多的相机模式,并通过调整曲线,混合类型,混合时间等参数以完成不同的相机控制效果。

使用案例

这里我有三个不同的相机模式,默认会使用CM_ThirdPerson,如果正在瞄准,则使用 CM_ThirdPerson_ADS;锁定目标时可切换到项目自定义的 CM_ThirdPerson_Targeting。

下面是这些相机模式在实际游戏中的效果:

当前配套项目中的相机资产

Unreal Asset Registry 在当前 GenericGame 项目中确认了两组示例:CameraCore 下的 CM_GCS_TopDown、BP_GCS_CameraPawn 和 C_GCS_CameraZoom;CameraExtras 下的 CM_ThirdPerson、CM_ThirdPerson_ADS、CM_ThirdPerson_CertainAbility 与 CM_ThirdPerson_ViewDirection。当前项目清单中未找到 CM_ThirdPerson_Targeting;上面的目标锁定模式名称应按项目自定义示例理解。完整路径见配套项目内容与示例资产。

拓展性

相机系统组件不仅仅用于基于角色类的Actor,你可以用于任意Actor,并为其添加各种不同的相机模式,然后根据游戏逻辑进行切换。

比如你的游戏是资源管理类游戏,你可能在某些情况下操控的是一个相机Actor,并在Topdown相机模式下管理你的营地。