设置相机系统组件
为你的角色添加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相机模式下管理你的营地。