那么,还是新建C++类
命名为CameraDirector
在CameraDirector.h中输入:
UPROPERTY(EditAnywhere)
AActor*CameraOne;
UPROPERTY(EditAntwhere)
AActor*CameraTwo;
float TimeToNextCameraChange;
在CameraDirector.cpp中输入:
include “Kismet/GamePlayStatics.h”
在文件的最开始部分
接着,在ACameraDirector::Tick中添加:
const float TimeBetweenCameraChanges = 2.0f;
const float SmoothBlendTime = 0.75f;
TimeToNextCameraChange -= DeltaTime;
if (TimeToNextCameraChange <= 0.0f)
{
TimeToNextCameraChange += TimeBetweenCameraChanges;
//搜寻处理玩家控制的Actor
APlayerController* OurPlayerController = UGameplayStatics::GetPlayerController(this, 0);
if (OurPlayerController)
{
if ((OurPlayerController->GetViewTarget() != CameraOne) && (CameraOne != nullptr))
{
//立即切换到相机1
OurPlayerController->SetViewTarget(CameraOne);
}
else if ((OurPlayerController->GetViewTarget() != CameraTwo) && (CameraTwo != nullptr))
{
//平滑的切换到相机2
OurPlayerController->SetViewTargetWithBlend(CameraTwo, SmoothBlendTime);
}
}
}
完成后按F5执行。
以上代码可以在相机1与相机2之间进行切换,接下来需要在编辑器中进行一些设置。
1,获取PlayerController,APlayerController* OurPlayerController = UGameplayStatics::GetPlayerController(this, 0);
2,获取当前视窗对象,OurPlayerController->GetViewTarget()
3,设置平滑过渡到新的目标视窗,OurPlayerController->SetViewTargetWithBlend(CameraTwo, SmoothBlendTime);
4,设置新的目标视窗,OurPlayerController->SetViewTarget(CameraOne);