Unreal Engine 4切换默认Camera实现
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实现相关推荐
- Unreal Engine 4 RenderTarget制作Live Camera效果
Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. ...
- unreal engine 默认启动插件
有些插件我们经常需要用到它,但每次都得手动启动,启动完还得重启,好在还是有方法可以设置默认启动 教程地址:Enable plugins permanently in Unreal Engine 4 r ...
- matlab您的安装可能需要执行其他配置步骤_手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真...
RoadRuner是MathWorks新收购的自动驾驶场景构建工具,Unreal Engine是商业游戏引擎.RoadRunner创建驾驶场景,导入到Unreal Engine,与Simulink联合 ...
- Unreal Engine 4 学习总动员读书笔记
Unreal Engine 4 学习总动员读书笔记 参考<Unreal Engine 4 学习总动员>,按照里面的录制的视频一步一步的操作,并将操作的流程和关键截图保存下来,方便后面的再次 ...
- UNREAL ENGINE 4.12 正式发布!下载地址
UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社 ...
- Unreal Engine 4 系列教程 Part 2:蓝图教程
原文:Unreal Engine 4 Blueprints Tutorial 作者:Tommy Tran 译者:Shuchang Liu 在本篇教程里,你将学会如何用蓝图系统创建玩家角色,设置输入,并 ...
- Unreal Engine 4 动画系统介绍
Unreal Open Day 2017 活动上 ,Epic Games 资深开发者支持工程师王祢先生为到场的开发者介绍了在 Unreal Engine 4 中动画系统,以下是演讲实录. 大家好!鉴于 ...
- Unreal Engine 4 中的 UI 优化技巧
http://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## 2017-05-09 虚幻引擎 Unreal Open Day 2017 活动上 Epic Gam ...
- Unreal Engine 4 —— 版本兼容的工作原理以及一些可优化项
http://blog.csdn.net/noahzuo/article/details/51887205 这篇博客讲解了在UE4中涉及到版本之间识别.切换的工作原理以及一些可优化项的介绍. 本博客翻 ...
最新文章
- 谁知道静态成员的纠结心境
- springcloud demo---feign
- linux 界面工具 qt,Qt主窗口中的工具栏
- 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限
- 小心多任务设计被滥用
- TCP 三次握手的意义
- linux下基于源码软件安装的那些事
- Java事务管理之Spring+Hibernate
- c语言中next和prior连在一起,C语言中双向链表和双向循环链表详解
- 【渝粤教育】国家开放大学2018年春季 0008-21T简明现代汉语 参考试题
- 素因子分解算法python语言_python中求取最小公倍数的两种方法
- 【知识碎片】JavaScript篇
- 经典Java入门视频教程免费下载
- 戴尔创业节丨高效编程利器Vostro低至2099!双11提前享!
- java实现QQ登录
- win7下快捷方式关联错误的修复
- element-ui在打开两个对话框时出现阴影的解决办法
- 鼠标移上提示框 提示框不消失
- android壁纸背景,android – 选择动态壁纸的背景
- 编写一个学生类student,包含的属性有学号,姓名,年龄
热门文章
- 游标声明 oracle,Oracle游标声明
- C++非递归解决汉诺塔问题
- firewall添加白名单_linux配置防火墙 Centos7下 添加 端口白名单
- python装饰器class_PYTHON里的装饰器能装饰类吗
- linux的QQ邮件告警,QQ邮箱告警注意点
- pytest的fixture传参数
- 求生2本地服务器怎么修改参数,《求生之路2》服务器指令及难度参数设置(难度篇).pdf...
- 中班音乐计算机反思,中班音乐教学反思
- python获取图片大小_如何在pygame(python)中获取图片大小
- python作用域的顺序_“Python”函数的参数和范围,及其,作用域