本节书摘来异步社区《Unreal Engine 4蓝图可视化编程》一书中的第2章,第2.1节,作者: Brenden Sewell 译者: 陈东林 责编: 胡俊英,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 制作瞄准镜效果

现代FPS的核心元素就是以瞄准镜的形式将FOV(field of view,视野)呈献给玩家。这是一个很重要的因素,给游戏带来了精确感和控制感。现在将这一功能的简化版添加到项目中。

在事件图表中靠近Mouse input节点组的空白区域单击鼠标右键,搜索输入动作Zoom(InputAction Zoom)触发器节点并添加。我们希望修改FirstPerson- Camera组件中的FOV值,于是到组件面板中找到FirstPersonCamera并将它拖入事件图表中。

从FirstPersonCamera节点的输出引脚拖出引线,搜索Set Field Of View(变量)节点并选择。减小视野给我们一种效果:在屏幕的中央将一小块区域进行放大。由于我们默认的视野值是90,处理后的视野值在节点中设为45,如图2.8所示。

连接输入动作Zoom的Pressed输出执行引脚和设置节点的输入执行引脚。编译、保存,最小化蓝图后在UE4关卡编辑器中单击播放进行测试。你将注意到当你右键单击鼠标时,视野会缩小,看到的物体也感觉更近了。由于主摄像机中为角色剔除的对象会产生变形,所以接下来我们将优化这一行为。

2.2.1 使用时间轴进行平滑过渡

为了让视野平滑转换,我们需要创建一个将变化逐渐地显示出来的动画。为了实现这个效果,先回到事件图表中的FirstPersonCharacter蓝图。

按住[Alt]键并单击输入动作Zoom节点的Pressed输出执行引脚的连接,从Pressed引脚拖出引线,搜索并选择添加时间轴(Add Timeline)来添加一个时间轴(timeline)。时间轴允许我们在指定的时间内改变一个值(比如摄像机的视野)。

注意 批注 

组件末尾的(继承)标签告诉我们这个组件的功能在C++ 脚本中定义,而不是在蓝图中定义的。组件的功能直接在C++ 脚本中定义,这在进行移动或网格定义的物理计算等复杂工作的组件中很常见的。如果你对继承组件的代码感兴趣,你可以右键单击该组件打开“.h”头文件。

为了改变时间轴的值,双击时间轴节点,打开时间轴编辑器。在编辑器左上角你将看到4个按钮,每个按钮都能添加一个不同类型的并且将在时间轴过程中改变的值。因为视野被一个数值所表示,所以我们单击[f]按钮(添加浮点型轨迹(Add Float Track)),将添加一个时间轴,并且光标闪烁提示修改标签名,我们将它命名为Field of View。现在我们需要在不同的时间间隔上编辑数值,如图2.9所示。

为了完成上图所示的时间轴,我们需要按住[Shift]键并在(0,0)点附近单击(也可以在(0,0)点附近单击鼠标右键>>添加关键帧),你将看到在图表的左上角出现时间和数值区域。这允许我们根据数值精确地调整时间轴。确保时间设置为0.0,默认视野(FOV)的值为90,即(时间,值)为(0.0,90)。

我们希望放大的动画尽量快速完成,所以在时间轴编辑器的顶端,找到长度(Length)右边的输入框,将默认值修改为0.3。这个操作可以将动画限定在0.3秒内完成。现在按住[Shift]键并单击图表白色区域的末端,仔细地将Time区域设为0.3,值区域设为45(如果觉得手动调比较麻烦,可以在输入框内直接输入)。这时数值区域内所有的数值都自动地被转换为近似的浮点型数值,如图2.10所示。这些数值差并不能产生更多的视觉上的差异,所以我们并不需要太关心这个数值转换。

注意到时间线反映的值逐渐地从90减小到45,这意味着当这个动画被调用时,玩家的视野将会平滑地放大,而不是迅速地从90直接变为45。这样就利用时间轴来设置数值在一段时间内的改变。

现在转到事件图表,我们希望用时间轴来设置视野,如图2.11所示连接蓝图。

从时间轴_0节点的Field of View输出引脚拖出引线至设置(Set)节点的输入引脚。这样将重写之前写死的值45。然后,将时间轴节点的Update输出执行引脚与设置节点的输入执行引脚相连。这个操作将使得视野值(FOV value)通过传递新的值给执行函数来随时更新。由于在时间轴里已经设置过了,视野的值在这里就不需要设置了,时间轴使得视野值从90到45在0.3秒内逐渐变化。

注意 批注 

UE4中有两种基本的方法实现动画。时间轴非常适合于简单的改变数值,比如门绕着轴旋转,对于更复杂的、基于角色的或者是电影般的动画,可以使用引擎内建的动画系统。Matinee(关键帧)和复杂的动画超出了本书的范围,但是有很多专用的学习资源是使用matinee的。建议从Unreal wiki相关的教程开始,参见wiki网站的相关介绍。

最后,我们希望当鼠标右键松开时,取消放大视野。为了实现这个效果,从输入动作Zoom节点的Released引脚出出引线连接至时间轴节点的Reverse引脚。这个操作将使得松开鼠标右键时,原来拉近视野的动画倒着播放(即拉远视野),保证在还原到原来视野时有一个平滑的切换动画。同样地,选中完成该功能的所有节点,为节点组添加注释,可方便后续查阅时能够快速了解这个节点组完成的功能。

现在请编译、保存蓝图,最小化蓝图编辑器后,在UE4编辑器中按下播放按钮进行测试,当你按下和松开鼠标右键时,视野是否能相应地拉近和拉远。

2.2.2 加快子弹的速度

我们已经给玩家角色增加了新的玩法,现在需要将关注点回到游戏的射击机制上。从刚才测试的情况来看,从枪口射出的子弹(小球)在空中的运动轨迹是一条速度相对较慢的弧线,我们希望适当加快子弹的速度让它看起来更像。

为了更改子弹的属性,我们需要打开同样位于Blueprints文件夹中的蓝图FirstPersonProjectile。打开蓝图后,找到组件面板里的并选择Projectile。这是一个控制子弹移动组件,其已经被添加到球体网格和碰撞器,用于定义当子弹在游戏世界中被创建后怎样运动。

在细节面板中,Projectile具有一系列的属性值。这些值与移动相关并可以被修改,我们将修改其中部分属性值,如图2.12所示。

首先,找到Initial Speed和Max Speed属性,默认值为3000。Initial Speed定义了当子弹被创建时的飞行速度。Max Speed定义了在子弹创建之后给子弹施加力,子弹能够达到的最大速度。如果我们有一个火箭,或许会期望在火箭发射后给它施加一个加速度来表示推进器工作。然而,由于我们正在表示从枪口射出的子弹,将初设速度设置的最快更有意义,因此将Initial Speed和Max Speed都设为之前速度的两倍,即6000。

此外,你或许注意到当子弹碰到墙和其他物体时会反弹,就像碰到了一堵橡皮墙一样。然而我们要模仿一个更硬、更强力的冲击弹丸。为了移除反弹属性,在细节面板中找到Projectile Bounces分类,将Should Bounce取消勾选。其他的选项只有在Should Bounce勾选时才起作用,所以不需要去调整它们。

现在请编译、保存蓝图,最小化蓝图编辑器后,在UE4编辑器中按下播放按钮进行测试,你将发现枪口射出的子弹打得更远、更有力度。

《Unreal Engine 4蓝图可视化编程》一2.2 制作瞄准镜效果相关推荐

  1. 《Unreal Engine 4蓝图可视化编程》一1.6 改变目标方向

    本节书摘来异步社区<Unreal Engine 4蓝图可视化编程>一书中的第1章,第1.6节,作者: Brenden Sewell 译者: 陈东林 责编: 胡俊英,更多章节内容可以访问云栖 ...

  2. UE4蓝图可视化编程资源发布

    各位购买了<UE4蓝图可视化编程>的读者们你们好!很久没有关注这本书了,发现有的读者有些困扰,这里还是大家先看下译者序(引擎版本一定要选对,翻译的时候最新版本是4.12.5,原书用的是4. ...

  3. 【UNREAL ENGINE 游戏开发】开篇之UE4的BLUEPRINT(蓝图)与C++(新童鞋必看)

    本站文章均为  李华明Himi  原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接:  http://www.himigame.com/unreal-engine-game/ ...

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

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

  5. Revit和Unreal Engine真实的建筑可视化视频教程

    Revit和Unreal Engine真实的建筑可视化视频教程 Lynda – Revit and Unreal Engine: Real-Life Architectural Visualizati ...

  6. 【学习笔记】Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞教程

    教程链接:Unreal Engine 4 虚幻引擎蓝图中级教程物理碰撞 想共享的小伙伴可以E-mail我:lxbcolorgalaxy@qq.com 目录 第一章 常见的物理现象及分析 1蓝图模板中的 ...

  7. Unity可视化编程插件: Bolt,可以像UE4的蓝图那样啦

    一.Bolt介绍 Unity公众号上推了一篇文章:<Bolt可视化编程现已面向所有Unity用户免费开放> Bolt是Unity的一个可视化编程插件,通过节点式的编辑图表来制定逻辑,策划人 ...

  8. 零基础Unreal Engine 4(UE4)图文笔记之准备篇(一)

    简介:十篇文章介绍虚幻4引擎的入门和基本内容,蓝图.材质.粒子效果.UI界面等 系列目录 准备篇 基本操作 材质入门 初步运行 简易交互门 多种开门方式 相对坐标.绝对坐标.世界坐标的含义 UI 粒子 ...

  9. Unreal Engine 4 初学者教程:开始

    原文:Unreal Engine 4 Tutorial for Beginners: Getting Started 作者:Tommy Tran 译者:kmyhy Unreal Engine 4 是一 ...

最新文章

  1. 手机扫一扫就能“隔空移物”?AR炫酷新玩法,快来解锁新技能吧!
  2. iOS之深入了解控制器View的加载
  3. linux下类似chkconfig的命令,Linux系统下chkconfig命令使用详解
  4. 面向接口编程详解(一)—— 思想基础
  5. 空间皮肤代码_OpenCV实现皮肤表面粗糙度3D显示
  6. 新建和删除文件夹js代码
  7. 吐槽:Lambda表达式
  8. c++字符串数组去重的另类思路
  9. python怎么改错误代码_【新人求助】py大神们求看,一段简单代码出错,不知道如何修改...
  10. 《软件需求工程》 读书笔记之二
  11. 票务公司加价将儿童机票售成年人赚取差价
  12. intel 7260 wifi linux,TK1入门教程基础篇-安装intel7260无线网卡
  13. 仲阳天王星 | 八载同行 启航向星
  14. WPCMS插件自动采集发布文章WordPress插件
  15. 盈利“晴空”下,唯品会拨不开的“乌云”
  16. 2022CPA财务与成本管理-管理会计专题【完结】
  17. 回溯法-符号三角形问题
  18. vue3项目打包优化三步走
  19. LinuxC中“库函数”的使用和常用的“输出函数”。
  20. vue实现echarts图表下载(含多张图表),导出图片格式

热门文章

  1. 破解版3D建模软件下载集合
  2. Visual Studio 2019 编译Firefox 68.0.1
  3. 关于使得p标签以及span标签里面内容自动换行css实现
  4. Nginx 原理和架构
  5. 查看Linux系统是UBUNTU还是CentOS的方法
  6. 享场地茶馆办公室v1.0.5 民宿 棋牌 共享茶室
  7. OCR文本检测算法-CTPN模型
  8. 交换机登录方式(SSH方式)
  9. 【电子取证篇】电子数据鉴定基本原则
  10. 神机百炼2.39-DFS