跳转到内容
CRUSHFORMV1.1.0
在 Fab 上获取

车辆追逐摄像机

追逐摄像机

追逐摄像机是车辆 Pawn 的第三人称摄像机。你可以用视角输入绕车环视;当你停止转动视角时,只要车辆开始移动,它就会缓动回到车后。它通过控制 Pawn 上某个弹簧臂的视图来工作。它独立于 Crushform 的其他部分:它不需要插件核心的任何内容,核心也不需要它。插件的示例 Pawn 使用了它。

从追逐摄像机看到的插件内置轿车:摄像机位于车后上方,轿车下侧沾有泥浆,前方是一排尖桩栅栏。
追逐摄像机位于轿车的后上方。

弹簧臂。 摄像机驱动其拥有者的某个弹簧臂的世界旋转,该弹簧臂按名称选择。它会将该弹簧臂切换为绝对旋转,这样车辆转向时不会带动摄像机一起转动。

视角。 两个 Axis 1D 输入动作为摄像机提供输入:一个用于偏航(左右转),一个用于俯仰(上下看),其中正值表示向上看。摄像机会在 Pawn 处于本地控制时,将它们绑定到 Pawn 的 Enhanced Input 组件上。视角动作的值以度为单位。鼠标通过其灵敏度换算,摇杆则按帧时间缩放。

视角阈值。 只有当视角输入在大约四分之一秒内累计达到 Look Threshold(2 度)时,才算作一次转动视角。较小的抖动,例如鼠标传感器的噪声,或刚好超过死区的摇杆,只会让视角轻微转动,并保持跟随状态。一次转动视角会暂停摄像机的跟随,并重新开始等待。

跟随。 在没有转动视角的情况下经过 Follow Delay(1.5 秒)后,摄像机会缓动回到车后。当车辆以 Min Follow Speed(200 厘米/秒)或更快的速度向前或侧向移动时,它会跟随行驶方向。低于该速度时,以及车辆倒车时,它会改为跟随车辆的朝向,因此几乎静止的车不会让摄像机摆动。俯仰会缓动回到 Default Pitch。

起始速度。 低于 Follow Start Speed(50 厘米/秒)时,摄像机完全不会缓动回到车后。它会停留在原处,因此你可以环视一辆静止的车。低于该速度时跟随延迟仍会继续倒计时,因此延迟结束后,车辆一达到该速度,摄像机就开始跟随。将其设为 0,摄像机也会回到静止车辆的后方。

跟随速率。 摄像机每帧都会靠近剩余角度的一部分。这一比例随车速上升:在 Min Follow Speed 时为 Min Follow Rate,在 Full Follow Speed(2500 厘米/秒)时为 Max Follow Rate,超过该速度后保持不变。

归位。 SnapBehind 会立即将摄像机放到车后,俯仰为默认值。摄像机会在游戏开始时、Pawn 重新启动时调用它,你也可以在车辆瞬移后自行调用它。

专用服务器。 摄像机在专用服务器上不进行 tick。

  1. 确认 Pawn 上有一个弹簧臂,其末端有一个摄像机。弹簧臂位于 Components 面板中,摄像机是它的子项。
  2. 打开 Pawn 的蓝图。在 Components 面板中点击 Add,选择 CFVehicle Chase Camera。它位于 Crushform 分组中。编译并保存。
  3. 选中追逐摄像机。将 Spring Arm 设为 Pawn 的弹簧臂。
  4. 将 Yaw Action 和 Pitch Action 分别设为两个 Axis 1D 输入动作,每个对应一个视角方向。插件在其 Input 文件夹中提供了示例动作 IA_LookAround 和 IA_LookUp。
Camera
Spring ArmBackSpringArm
Tuning
Min Pitch-70.0°
Max Pitch30.0°
Default Pitch0.0°
Follow Delay1.5 s
Look Threshold2.0°
Follow Start Speed50.0 cm/s
Min Follow Speed200.0 cm/s
Full Follow Speed1000.0 cm/s
Min Follow Rate1.0
Max Follow Rate4.0
Input
Yaw ActionIA_LookAround
Pitch ActionIA_LookUp
BP_VehicleAdvSedan 的 ChaseCamera 组件:展开了 Spring Arm 下的 Tuning,以及 Yaw 和 Pitch 动作。
  1. 只有当默认手感不合适时,才调整 Tuning 的值。默认值见下方的主要设置。

摄像机需要 Enhanced Input 插件,因为它将两个动作绑定到 Enhanced Input 组件上。

在蓝图中,常见的任务是通过触摸摇杆转动视角,以及在重生后将摄像机放到车后。以度为单位,调用 AddLookInput 并传入偏航和俯仰值;车辆瞬移后调用 SnapBehind。

图表在追逐摄像机上调用 AddLookInput 和 SnapBehind。

C++ 中的相同调用。先从 Pawn 获取摄像机,然后调用其函数。签名以头文件中的为准。你的模块必须在 Build.cs 中列出 Crushform 模块,参见安装。

#include "CFVehicleChaseCameraComponent.h"
void AMyPawn::OnTouchLook(const float YawDegrees, const float PitchDegrees)
{
if (UCFVehicleChaseCameraComponent* Camera = FindComponentByClass<UCFVehicleChaseCameraComponent>())
{
Camera->AddLookInput(YawDegrees, PitchDegrees);
}
}
void AMyPawn::Respawn(const FVector& Location)
{
SetActorLocation(Location);
if (UCFVehicleChaseCameraComponent* Camera = FindComponentByClass<UCFVehicleChaseCameraComponent>())
{
Camera->SnapBehind();
}
}

如果你自己绑定视角动作,BindLookInput 接受 Pawn 的 Enhanced Input 组件。它会替换摄像机之前所做的绑定。

以下设置位于 UCFVehicleChaseCameraComponent 上,但调节值除外:调节值位于 Tuning 属性中的 FCFVehicleChaseCameraTuning 上。角度以度为单位,速度以厘米/秒为单位,速率以 1/秒为单位。

属性作用默认值
UCFVehicleChaseCameraComponent::SpringArm摄像机所转动的弹簧臂,按名称选择。没有它,摄像机即关闭。无
UCFVehicleChaseCameraComponent::YawAction使视角左右转动的 Axis 1D 动作,单位为度。为空:不偏航。空
UCFVehicleChaseCameraComponent::PitchAction使视角上下倾斜的 Axis 1D 动作,单位为度。正值向上看。为空:不俯仰。空
UCFVehicleChaseCameraComponent::Tuning环绕和跟随的数值,见下。见下
FCFVehicleChaseCameraTuning::MinPitch最低俯仰:摄像机处于最高位置,俯视车辆。-60 度
FCFVehicleChaseCameraTuning::MaxPitch最高俯仰:摄像机处于最低位置。让摄像机在弹簧臂长度处保持在地面之上。10 度
FCFVehicleChaseCameraTuning::DefaultPitch跟随时摄像机缓动回到的俯仰,在上述限制之内。0 度
FCFVehicleChaseCameraTuning::FollowDelay没有转动视角的秒数,之后摄像机开始跟随车辆。1.5 秒
FCFVehicleChaseCameraTuning::LookThreshold在大约四分之一秒内,达到此值的视角输入即算作一次转动视角。2 度
FCFVehicleChaseCameraTuning::FollowStartSpeed低于此平面速度时,摄像机不会缓动回到车后,因此静止车辆的视角会保持在原处。设为 0 时,摄像机也会跟随静止的车辆。50 厘米/秒
FCFVehicleChaseCameraTuning::MinFollowSpeed低于此平面速度时,摄像机跟随车辆的朝向,而不是行驶方向。200 厘米/秒
FCFVehicleChaseCameraTuning::FullFollowSpeed达到并超过此平面速度时,摄像机以最大速率跟随。2500 厘米/秒
FCFVehicleChaseCameraTuning::MinFollowRate在最低速度及以下时的跟随速率。1 /秒
FCFVehicleChaseCameraTuning::MaxFollowRate在满速时的跟随速率。4 /秒
  1. 按 Play,向前驾驶汽车。摄像机会跟在车后。
  2. 拖动鼠标。视角会立即转动。松开并等待约 1.5 秒。摄像机会缓动回到车后。
  3. 等摄像机稳定在车后,然后倒车。它会转向车头,而不是行驶方向。
  4. 停下车辆。拖动鼠标看向一侧,松开并等待几秒。摄像机会停留在你转到的位置。开车起步后,它会缓动回到车后。

摄像机没有声明统计组,因此没有控制台输出。请目测检查。

摄像机已关闭,日志提示弹簧臂未指定名称

Section titled “摄像机已关闭,日志提示弹簧臂未指定名称”

原因。 Spring Arm 没有指向 Pawn 上的某个弹簧臂组件。摄像机会自行关闭。

修复。 将 Spring Arm 设为 Pawn 的弹簧臂组件。

原因。 有三种可能。Yaw Action 或 Pitch Action 为空;Pawn 的输入组件不是 Enhanced Input 组件;或 Pawn 不是本地控制的,因此没有任何绑定。

修复。 同时设置两个动作,为 Pawn 使用 Enhanced Input,并检查 Pawn 是否由本地玩家控制。

原因。 视角输入一直在持续。在大约四分之一秒内累计达到 Look Threshold 的输入会算作一次转动视角,每次转动都会重新开始等待。摇杆漂移超过死区时就可能出现这种情况。

修复。 为摇杆映射添加死区;如果摇杆漂移大于默认值所能容忍的范围,则提高 Look Threshold。

摄像机没有回到缓慢行驶车辆的后方

Section titled “摄像机没有回到缓慢行驶车辆的后方”

原因。 车速低于 Follow Start Speed。低于该速度时,摄像机不会缓动回到车后。

修复。 降低 Follow Start Speed,或将其设为 0,使摄像机在任何速度下都会缓动回到车后。

原因。 Follow Start Speed 为 0,或低于静止车辆抖动时的速度。

修复。 将 Follow Start Speed 提高到该抖动之上。