UE4学习笔记7th:在世界中放置相机Director

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

编译完成后,在内容浏览器中找到CameraDirector,并拖入关卡编辑器中。

在Camera Director中设置如下:

点击Play,可以看到视口由Cube连续地滑动到CameraTwo处

这一节到这里就结束了,下一部分我会学习Variables,Timers,and Events

这是全部的代码:

CameraDirector.h// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "GameFramework/Actor.h"#include "CameraDirector.generated.h"UCLASS()class HOWTO_AUTOCAMERA_API ACameraDirector : public AActor{GENERATED_BODY()public: // Sets default values for this actor's propertiesACameraDirector();// Called when the game starts or when spawnedvirtual void BeginPlay() override;// Called every framevirtual void Tick( float DeltaSeconds ) override;UPROPERTY(EditAnywhere)AActor* CameraOne;UPROPERTY(EditAnywhere)AActor* CameraTwo;float TimeToNextCameraChange;};CameraDirector.cpp// Fill out your copyright notice in the Description page of Project Settings.#include "HowTo_AutoCamera.h"#include "CameraDirector.h"#include "Kismet/GameplayStatics.h"// Sets default valuesACameraDirector::ACameraDirector(){  // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.PrimaryActorTick.bCanEverTick = true;}// Called when the game starts or when spawnedvoid ACameraDirector::BeginPlay(){Super::BeginPlay();}// Called every framevoid ACameraDirector::Tick( float DeltaTime ){Super::Tick( DeltaTime );const float TimeBetweenCameraChanges = 2.0f;const float SmoothBlendTime = 0.75f;TimeToNextCameraChange -= DeltaTime;if (TimeToNextCameraChange <= 0.0f){TimeToNextCameraChange += TimeBetweenCameraChanges;//搜寻处理玩家控制的ActorAPlayerController* OurPlayerController = UGameplayStatics::GetPlayerController(this, 0);if (OurPlayerController){if ((OurPlayerController->GetViewTarget() != CameraOne) && (CameraOne != nullptr)){//立即切换到相机1OurPlayerController->SetViewTarget(CameraOne);}else if ((OurPlayerController->GetViewTarget() != CameraTwo) && (CameraTwo != nullptr)){//平滑的切换到相机2OurPlayerController->SetViewTargetWithBlend(CameraTwo, SmoothBlendTime);}}}}