欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

获取摄像机,摄像机切换Learn Unreal Engine (with C++)

发布时间:2023/12/10 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 获取摄像机,摄像机切换Learn Unreal Engine (with C++) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

摄像机应该是使用最普遍的组件了

获取摄像机,摄像机切换

  • 新建C++类(以CameraActor为父类)

  • 将摄像机在地图中放置

  • 头文件声明

    virtual void BeginPlay() override;UPROPERTY(EditAnywhere, BlueprintReadWrite)UBoxComponent* OverlapVolume; // 盒体组件,用于检测人物碰撞UPROPERTY(EditAnywhere, BlueprintReadWrite)TSubclassOf<ACameraActor> CameraToFind; //待寻找的摄像机UPROPERTY(EditAnywhere, BlueprintReadWrite)float CameraBlendTime; // 切换时间virtual void NotifyActorBeginOverlap(AActor* OtherActor) override;virtual void NotifyActorEndOverlap(AActor* OtherActor) override;
  • 实现

    void ABlendTriggerVolume::NotifyActorBeginOverlap(AActor* OtherActor) {Super::NotifyActorBeginOverlap(OtherActor);//如果是人物转换就能成功,反之nullptrif(AStaticCameraCharacter* PlayerCharacterCheck = Cast<AStaticCameraCharacter>(OtherActor)){//得到玩家角色的玩家控制器,同上if(APlayerController* PlayerCharacterController = Cast<APlayerController>(PlayerCharacterCheck->GetController())){TArray<AActor*> FoundActors;//获取所有对象的数组UGameplayStatics::GetAllActorsOfClass(GetWorld(), CameraToFind, FoundActors);//摄像机绑定PlayerCharacterController->SetViewTargetWithBlend(FoundActors[0], CameraBlendTime, EViewTargetBlendFunction::VTBlend_Linear);}} } void ABlendTriggerVolume::NotifyActorEndOverlap(AActor* OtherActor) {Super::NotifyActorEndOverlap(OtherActor);if (AStaticCameraCharacter* PlayerCharacterCheck = Cast<AStaticCameraCharacter>(OtherActor)){if(APlayerController* PlayerCharacterController = Cast<APlayerController>(PlayerCharacterCheck->GetController())){PlayerCharacterController->SetViewTargetWithBlend(PlayerCharacterController->GetPawn(), CameraBlendTime, EViewTargetBlendFunction::VTBlend_Linear);}} }
  • 之后我们基于摄像机类创建蓝图类,并设置相关内容

    在蓝图细节中找到如下,并设置

  • 创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

    总结

    以上是生活随笔为你收集整理的获取摄像机,摄像机切换Learn Unreal Engine (with C++)的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。