http://blog.csdn.net/shangguanwaner/article/details/39399439

默认的,UE4,会以AGameMode中设置DefaultPawnClass对象中摄影机作为默认摄影机。有时候我们想要一个全局的摄影机对场景进行观察,这就需要重新创建一个摄影机,并在这两个摄影机直接切换。下面看下如何实现。

在APlayerController类中,有一个SetViewTarget方法,参数是一个AActor指针,就是实现此功能的。因为参数必须是AActor,即必须是AActor中包含的Camera组件才有效,所有,先创建一个AActor对象。

FreeCameraActor.h

UCLASS()
class NANTOPDOWN_API AFreeCameraActor : public AActor
{
GENERATED_UCLASS_BODY()

public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Camera)
TSubobjectPtr<class UCameraComponent> TopDownCameraComponent;

UFUNCTION(BlueprintCallable, Category = "View Target")
void ChangeViewTarget();

virtual void BeginPlay() override;

private:
AActor* OldActor;
};

ChangeViewTarget()方法提供给Blueprint调用,用于在Character的Camera和FreeCamera之间切换。

FreeCameraActor.cpp

AFreeCameraActor::AFreeCameraActor(const class FPostConstructInitializeProperties& PCIP)
: Super(PCIP)
{
TopDownCameraComponent = PCIP.CreateDefaultSubobject<UCameraComponent>(this, TEXT("TopDownCamera"));
this->RootComponent = TopDownCameraComponent;
OldActor = NULL;
}

void AFreeCameraActor::ChangeViewTarget()
{
AActor* pActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();
if (pActor != OldActor)
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(OldActor);
}
else
{
this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}
}

void AFreeCameraActor::BeginPlay()
{
Super::BeginPlay();

OldActor = this->GetWorld()->GetFirstPlayerController()->GetViewTarget();

this->GetWorld()->GetFirstPlayerController()->SetViewTarget(this);
}

在Editor中创建一个从AFreeCameraActor继承的Actor,并拖放到场景中去。可以看到一个包含了摄影机的对象。然后编辑Level Blueprint,加入脚本代码

Play场景,按下1键,就能看到摄影机在character和刚才新建的摄影机间进行切换了。

Unreal Engine 4切换默认Camera实现相关推荐

  1. Unreal Engine 4 RenderTarget制作Live Camera效果

    Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. ...

  2. unreal engine 默认启动插件

    有些插件我们经常需要用到它,但每次都得手动启动,启动完还得重启,好在还是有方法可以设置默认启动 教程地址:Enable plugins permanently in Unreal Engine 4 r ...

  3. matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...

    RoadRuner是MathWorks新收购的自动驾驶场景构建工具,Unreal Engine是商业游戏引擎.RoadRunner创建驾驶场景,导入到Unreal Engine,与Simulink联合 ...

  4. Unreal Engine 4 学习总动员读书笔记

    Unreal Engine 4 学习总动员读书笔记 参考<Unreal Engine 4 学习总动员>,按照里面的录制的视频一步一步的操作,并将操作的流程和关键截图保存下来,方便后面的再次 ...

  5. UNREAL ENGINE 4.12 正式发布!下载地址

    UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社 ...

  6. Unreal Engine 4 系列教程 Part 2:蓝图教程

    原文:Unreal Engine 4 Blueprints Tutorial 作者:Tommy Tran 译者:Shuchang Liu 在本篇教程里,你将学会如何用蓝图系统创建玩家角色,设置输入,并 ...

  7. Unreal Engine 4 动画系统介绍

    Unreal Open Day 2017 活动上 ,Epic Games 资深开发者支持工程师王祢先生为到场的开发者介绍了在 Unreal Engine 4 中动画系统,以下是演讲实录. 大家好!鉴于 ...

  8. Unreal Engine 4 中的 UI 优化技巧

    http://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## 2017-05-09 虚幻引擎 Unreal Open Day 2017 活动上 Epic Gam ...

  9. Unreal Engine 4 —— 版本兼容的工作原理以及一些可优化项

    http://blog.csdn.net/noahzuo/article/details/51887205 这篇博客讲解了在UE4中涉及到版本之间识别.切换的工作原理以及一些可优化项的介绍. 本博客翻 ...

最新文章

  1. 谁知道静态成员的纠结心境
  2. springcloud demo---feign
  3. linux 界面工具 qt,Qt主窗口中的工具栏
  4. 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限
  5. 小心多任务设计被滥用
  6. TCP 三次握手的意义
  7. linux下基于源码软件安装的那些事
  8. Java事务管理之Spring+Hibernate
  9. c语言中next和prior连在一起,C语言中双向链表和双向循环链表详解
  10. 【渝粤教育】国家开放大学2018年春季 0008-21T简明现代汉语 参考试题
  11. 素因子分解算法python语言_python中求取最小公倍数的两种方法
  12. 【知识碎片】JavaScript篇
  13. 经典Java入门视频教程免费下载
  14. 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!
  15. java实现QQ登录
  16. win7下快捷方式关联错误的修复
  17. element-ui在打开两个对话框时出现阴影的解决办法
  18. 鼠标移上提示框 提示框不消失
  19. android壁纸背景,android – 选择动态壁纸的背景
  20. 编写一个学生类student,包含的属性有学号,姓名,年龄

热门文章

  1. 游标声明 oracle,Oracle游标声明
  2. C++非递归解决汉诺塔问题
  3. firewall添加白名单_linux配置防火墙 Centos7下 添加 端口白名单
  4. python装饰器class_PYTHON里的装饰器能装饰类吗
  5. linux的QQ邮件告警,QQ邮箱告警注意点
  6. pytest的fixture传参数
  7. 求生2本地服务器怎么修改参数,《求生之路2》服务器指令及难度参数设置(难度篇).pdf...
  8. 中班音乐计算机反思,中班音乐教学反思
  9. python获取图片大小_如何在pygame(python)中获取图片大小
  10. python作用域的顺序_“Python”函数的参数和范围,及其,作用域