Unreal Engine 4 C++ 能够创建角色Zoom摄像头(资源)
游戏摄像头可以观察到的距离越近,作用和拉远是一个比较普遍的要求,UE4它也实现比较简单。
在这篇文章中TopDown模板案例,解释如何,分步实施能Zoom摄像头。
创建TopDown模板C++项目达产后,我们去叫3一类重要。AXXXCharacter类,实现角色的控制和行为。
AXXXGameMode类,项目的默认GameMode。定义默认的角色控制器和默认Pawn。AXXXPlayerController,角色控制器类。接受输入控制,并指导角色进行行动。
我们主要改动AXXXCharacter类。
说下Zoom实现的原理。UE4专门为摄影机碰撞实现了一个USpringArmComponent类,它能自己主动处理和摄影机相关的碰撞、缩进等等功能。为了实现Zoom,仅仅须要适当的调节此类的TargetArmLength变量的值就可以。非常easy。
首先,我们定义Zoom配置參数。
在XXXCharacter.h文件里增加下列结构体:
USTRUCT()
struct FZoomData
{
GENERATED_USTRUCT_BODY() UPROPERTY(EditDefaultsOnly, Category = Config)
float MinCameraLen; UPROPERTY(EditDefaultsOnly, Category = Config)
float MaxCameraLen; UPROPERTY(EditDefaultsOnly, Category = Config)
float ZoomStepLen;
};
MinCameraLen。定义摄影机近期距离。MaxCameraLen,定义摄影机最远距离。ZoomStepLen,定义每一小步,Zoom的距离。注意USRUCT()前缀,这个结构体后面在编辑器中能够自己配置。
第二步。为AXXXCharacter类加入配置參数。
UPROPERTY(EditDefaultsOnly, Category = Config)
FZoomData ZoomConfig;
第三步。为AXXXCharacter加入成员ZoomIn和ZoomOut方法。这两个方法,详细实现Zoom功能。
UFUNCTION(BlueprintCallable, Category= Camera)
void ZoomIn(); UFUNCTION(BlueprintCallable, Category = Camera)
void ZoomOut();
第四步,为AXXXCharacter加入重载方法SetupPlayerInputComponent。此方法初始化输入绑定。
protected:
virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;
以下是各个方法的详细实现:
void AsqxgameCharacter::SetupPlayerInputComponent(class UInputComponent* InputComponent)
{
check(InputComponent);
InputComponent->BindAction("ZoomIn", IE_Pressed, this, &AsqxgameCharacter::ZoomIn);
InputComponent->BindAction("ZoomOut", IE_Pressed, this, &AsqxgameCharacter::ZoomOut);
}
SetupPlayerInputComponent方法,绑定了两个名为ZoomIn和ZoomOut的动作。这两个动作在编辑器中设置。
在菜单Edit->Project Settings->Input项目下。
我将两个动作分别绑定到了Mouse Wheel Up和Mouse Wheel Down两个按键上。
void AsqxgameCharacter::ZoomIn()
{
if (CameraBoom->TargetArmLength >= ZoomConfig.MinCameraLen)
{
CameraBoom->TargetArmLength -= ZoomConfig.ZoomStepLen;
}
else
{
CameraBoom->TargetArmLength = ZoomConfig.MinCameraLen;
}
} void AsqxgameCharacter::ZoomOut()
{
if (CameraBoom->TargetArmLength <= ZoomConfig.MaxCameraLen)
{
CameraBoom->TargetArmLength += ZoomConfig.ZoomStepLen;
}
else
{
CameraBoom->TargetArmLength = ZoomConfig.MaxCameraLen;
}
}
ZoomIn和ZoomOut方法实现非常easy。就不解释了。
编译代码,并在Character蓝图中设置好ZoomConfig的值。运行游戏,就能看到结果了。
项目源码:http://git.oschina.net/cloudsource/UE4-Code/tree/master/sqxgame
版权声明:本文博主原创文章,博客,未经同意不得转载。
Unreal Engine 4 C++ 能够创建角色Zoom摄像头(资源)的更多相关文章
- 剖析Unreal Engine超真实人类的渲染技术Part 1 - 概述和皮肤渲染
一.概述 1.1 数字人类的概要 数字人类(Digital Human)是利用计算机模拟真实人类的一种综合性的渲染技术.也被称为虚拟人类.超真实人类.照片级人类. 它是一种技术和艺术相结合的综合性模拟 ...
- Unreal Engine 4 RenderTarget制作Live Camera效果
Unreal Engine 4 RenderTarget制作Live Camera效果 先上效果: Live Camera我不知道怎么翻译.反正意思就是将一个摄影机的Image渲染到一个2D平面上. ...
- Unreal Engine 4 创建Destructible Mesh(可破坏网格)
Unreal Engine 4的物理引擎用的是PhysX. 支持网格破坏.布料.物理粒子等,非常强大.曾经须要编码才干完毕的工作,在Unreal Engine 4 中仅仅须要拖拖拽拽就完毕了,非常方便 ...
- 游戏音频技术备忘 (五)Wwise Unreal Engine 集成代码浅析 二
AkAmbientSound类的实现 Unreal Engine提供了一个基本对象的构造器ObjectInitializer,一般来说用户创建的类总是拥有很多变量,因此 AkAmbientSound ...
- 游戏音频技术备忘 (四) Wwise Unreal Engine 集成代码浅析 (一)
在Engine\Plugins\Wwise\Source下为主要Wwise相关代码,AkAudio文件夹下为运行时相关代码,AudiokineticTools下为编辑器工具相关代码,Audiokine ...
- 游戏音频技术备忘 (三) 集成Wwise到Unreal Engine
当前受众较广的商业游戏引擎有 Unreal Engine.Unity.cocos2d-x等,在音频领域的第三方中间件则有Wwise.FMOD.Criware等,言多且烦,我们首先集成Wwise到 Un ...
- 实例甜点 Unreal Engine 4迷你教程(4)之用C++实现添加子Widget到VerticalBox中以及ClearChildren
前置教程: 1. 实例甜点前面的三篇教程: 2. 最好看看笔者前面的一篇关于博文(后记:本来笔者想用C++做DragAndDrop的功能,但是失败了,下面是蓝图实现的方法): http://www.c ...
- 实例甜点 Unreal Engine 4迷你教程(6)之三个重要基础操作SpawnActor、TArray的Add和Remove
本小节的教程需要完成前置教程:建议阅读<实例甜点 Unreal Engine 4迷你教程(5)>,因为5里面提到了本节的工程,不过也可以在不看5的前提下直接阅读本教程. 第一步:Empty ...
- Unreal Engine 4 C++ UCLASS构造函数易出错分析
Unreal Engine 4 C UCLASS构造函数易出错分析 GENERATED_BODY GENERATED_UCLASS_BODY 在Unreal Engine 4的任意类中通常会见到两个宏 ...
随机推荐
- unable to load default svn client 和 Eclipse SVN 插件与TortoiseSVN对应关系
(一)unable to load default svn client 在Win7下的Eclipse,安装了subclipse 1.10.x,已经选中了subclipse和subversion Cl ...
- Oracle“记录被另一个用户锁住” 无法更新删除的解决办法
1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b. ...
- OCA读书笔记(14) - 备份和恢复基本概念
备份恢复概念 如何判断数据库的一致性 在mount状态下,oracle如何判断数据库的一致性 scn:system change number,它是数据库时钟 如何查询当前系统的scn: select ...
- android 在你的UI中显示Bitmap - 开发文档翻译
由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接 Displaying Bitmaps in Your UI 在你的UI中显示Bitmap ...
- Jetty:配置连接器
连接器配置概览 连接器用于接收网络连接,配置一个连接器须要配置: 1)连接器的网络參数(比如:port): 2)连接器使用的服务(比如:executors,schedulers). 3)为接收连 ...
- Android拖动和缩放图片
Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...
- Android 自己定义View (二) 进阶
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自己定义View之旅.前面已经介绍过一个自己定义View的基础 ...
- SE 2014年5月22日
一. 用自己的理解描述 tunnel接口状态 up和down的情况都有哪些 Tunnel接口的状态UP:隧道的目标有可达路由. Tunnel接口的状态Down:隧道的目标路由不可达. 如图配置实验 ...
- mysql自动备份
#!/bin/bash MyUSER="SET-MYSQL-USER-NAME" # USERNAME MyPASS="SET-PASSWORD" ...
- MySQL中Procedure事务编写基础笔记
原文:MySQL中Procedure事务编写基础笔记 目录: 一.PROCEDURE: 二.CREATE PROCEDURE基本语法: 三.PROCEDURE小进阶 3.1.基本的DECLARE语 ...