ULegacyCameraShake
在Unreal中实现了摄像机的震动,只需要继承ULegacyCameraShake
类即可实现。
- 创建
CameraShake
类。 - 初始化该类的信息,包括相机震动的幅度,持续时间等等。
// CameraShake.cpp
UCameraShake::UCameraShake()
{
// 持续时间
OscillationDuration = 0.1f;
// 渐入时间
OscillationBlendInTime = 0.02f;
// 渐出时间
OscillationBlendOutTime = 0.02f;
// 振幅与频率
LocOscillation.X.Amplitude = 5.0f;
LocOscillation.X.Frequency = 5.0f;
LocOscillation.Y.Amplitude = 5.0f;
LocOscillation.Y.Frequency = 5.0f;
LocOscillation.Z.Amplitude = 5.0f;
LocOscillation.Z.Frequency = 5.0f;
RotOscillation.Pitch.Amplitude = 0.0f;
RotOscillation.Pitch.Frequency = 0.0f;
RotOscillation.Yaw.Amplitude = 0.0f;
RotOscillation.Yaw.Frequency = 0.0f;
RotOscillation.Roll.Amplitude = 0.0f;
RotOscillation.Roll.Frequency = 0.0f;
}
触发相机的震动
编写出发相机震动的函数,在需要触发震动时,调用该函数即可。
void ABasePawn::TriggerCameraShake()
{
APlayerController* PlayerController = UGameplayStatics::GetPlayerController(this, 0);
if (PlayerController && PlayerController->PlayerCameraManager)
{
PlayerController->PlayerCameraManager->StartCameraShake(UCameraShake::StaticClass());
}
}