UE4学习笔记6th:在C++中控制相机视图

来源:互联网 发布:支付宝能登陆淘宝吗 编辑:程序博客网 时间:2024/06/08 03:03

那么,还是新建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);

原创粉丝点击