《Unreal Engine 4蓝图可视化编程》一1.4 创建第一个蓝图

1.4 创建第一个蓝图

现在游戏世界中放置了一个圆柱体,在当圆柱体被击中时,我们需要为圆柱体赋上前一节创建的材质。最后一个交互是游戏逻辑判断圆柱体被选择,然后将圆柱体的材质改变为红色材质。为了创建这一行为并添加到圆柱体上,我们需要创建一个蓝图。创建蓝图的方式有很多种,但是为了简便,我们可以创建蓝图并直接添加给圆柱体。为此,确保在场景中选中了CylinderTarget对象。单击细节面板顶端的蓝色蓝图/添加脚本(Blueprint/Add Script)按钮,将可看到路径选择窗口。

在这个项目中, 我们把所有的蓝图存放在FirstPersonBP文件夹的子文件夹Blueprints下,因为这个蓝图是为CylinderTarget actor创建的,所以文件名为默认的Cylinder- Target_Blueprint即可,如图1.13所示。

现在内容浏览器(content browser)的FirstPersonBP >> Blueprints文件夹中可以看到CylinderTarget_Blueprint。双击打开该蓝图的蓝图编辑器,我们将看到圆柱体的视口视图,如图1.14所示。我们可以操作actor的一些默认属性或者增加更多的组件,它们都包括很多自有逻辑使得actor更加复杂。我们将在后续章节中探讨组件(components),现在,我们需要创建一个简单的蓝图并直接赋给actor。为此,单击视口标签旁边的事件图表(Event Graph)标签。

图1.14 视口视图

1.4.1 浏览事件图表面板

事件图表(见图1.15)看起来应该很熟悉,因为它与我们之前使用的材质编辑器的视觉效果和功能上由很多相似之处。默认情况下,打开事件图表时会有3个未连接也未使用的事件节点。事件(Event)指游戏中的一些动作(action),它作为蓝图做某件事情的触发器。大多数蓝图遵循如下结构:事件(when)|条件(if)动作(do)。这个可以被文字描述为:当某件事情发生时,检查X、Y、Z是否为真,如果为真,完成这一系列的动作。举个例子,蓝图定义了我是否开枪,流程如下:当(when)扣动扳机,如果(if)子弹已上膛,进行(do)射击。

在事件图表中,列出的3个默认事件节点是用的最多的事件触发器。当玩家(Player)第一次开始玩游戏时触发事件Begin Play。当另一个actor开始与蓝图控制的现有actor发生触碰或重叠时触发事件Actor Begin Overlap。事件Tick在游戏运行的每一帧触发与之关联的动作,帧率决定于电脑的配置,也影响着事件Tick触发动作的频率。

我们希望每次射弹击中圆柱体时,都能触发“改变材质”这一动作。可以使用事件Actor Begin Overlap节点来探测射弹对象与目标的网格是否重叠。我们将通过仅当另一个actor触发目标actor时检测来简化这些。以一个简洁的页面开始吧,选中所有的默认事件,单击键盘的[delete]键把它们都删除。

1.4.2 检测事件Hit

为了创建检测事件,在图表空白区域单击鼠标右键,搜索框中输入“hit”,如图1.16所示。找到事件Hit(Event Hit)节点并选择,当这个蓝图控制的actor被另一个actor触发的事件Hit。

当在事件图表中添加了事件Hit节点后,会看到事件Hit节点上有许多颜色各异的输出引脚。首先注意到节点右上角的白色类似三角形的引脚,这是执行引脚(execution pin)。它定义了动作序列中下一步要执行的动作。将不同节点的执行引脚连接在一起便组成了所有蓝图的基本功能。既然拥有了触发器,那我们就需要找到一个动作,这个动作可以让我们能够改变actor的材质。

从执行引脚拖出一根引线至节点右端的空白区域,将自动出现一个搜索窗口,允许我们创建一个节点并将它与执行引脚相连。确认搜索框内勾选了情境关联(Context Sensitive)。这样将搜索结果限制在能够被添加的节点中。在搜索框内键入“set material”,选取Set Material(StaticMeshComponent)节点。

注意 小贴士 

如果在勾选了情境关联的情况下搜索不到想查找的节点,可尝试去勾选重新搜索。即使这个节点在情境关联搜索时查找不到,它仍有可能可以添加到蓝图逻辑当中。

事件Hit节点中的动作(action)如图1.17所示。

1.4.3 转换材质

当用户将Set Material节点放置到蓝图中后,便会注意到它已经与事件Hit节点的执行引脚连接。当蓝图的actor被另外的actor击中时,蓝图现在将会执行Set Material动作。然而,我们现在还没有设置响应Set Material时将要调用的材质。

为了设置将调用的材质,单击Set Material节点中的选择资源(Select Asset),调出下拉列表,在搜索框内输入“red”来搜索之前创建的TargetRed材质。查找到该材质后单击它,将该资源添加到Set Material节点的材质区域,如图1.18所示。

我们现在已经做好了改变目标圆柱体颜色的蓝图的准备工作,但是在保存(Save)蓝图之前,还需要编译一下。编译是将蓝图语言转换为告诉计算机该如何操作的机器指令。单击编辑器工具左上角的编译(Compile)按钮,然后单击保存。

既然我们已经设置了一个基础的游戏交互,运行测试一下,确保结果是否达到预期。关闭蓝图编辑器,在UE编辑器中单击播放按钮运行游戏,尝试跑动和射击,与我们之前创建的CylinderTarget actor发生碰撞,如图1.19所示。

1.4.4 升级蓝图

当运行游戏的时候,会看到目标圆柱体在被子弹击中时,确实改变了颜色。这是游戏框架的初始,它可以用于接收敌人对于玩家(Player)动作的反馈。你或许也会注意到玩家碰到目标圆柱体时,圆柱体也会改变颜色,然而我们希望只有子弹击中目标时才改变目标颜色。这些不可预见的结果在游戏开发过程中很普遍,最好避免的方法就是频繁地测试我们正在创建的游戏。

为了修正蓝图中的bug,让它仅对子弹击中时做出反应并改变目标颜色,回到Cylinder Target_Blueprint蓝图,继续查看事件Hit节点。

在事件Hit节点上余下的输出引脚,它们是存储着关于事件数据的一些变量。这些数据可以被传递到其他节点。引脚的颜色代表着变量的数据类型,蓝色引脚传递对象(object),例如actor;红色引脚包含一个布尔型(true/false)变量。

随着接触更复杂的蓝图,我们将学习更多的引脚类型,但现在,我们只需要关心蓝色的Other输出引脚。它包含其他actor的碰撞触发事件Hit的数据。这个在确保目标圆柱体只在被子弹击中时改变颜色很有用,而其他的actor碰到目标时不改变颜色。

为了确保仅对子弹做出响应,断开事件Hit节点与SetMaterial节点之间的连接(断开引脚连接的方法之一为:按住[Alt]键,然后鼠标左键单击连线),从Other引脚拖出一根引线到空白区域,在搜索框内键入“projectile”,找到“类型转换为FirstPersonProjectile(Cast To FirstPersonProjectile)”并选择,如图1.20所示。

FirstPersonProjectile是UE4引擎的第一人称模板中的蓝图,控制着子弹的行为。该节点使用类型转换来确保:只有在子弹actor击中与转换节点引用的对象相匹配的圆柱体时,才将动作附加到节点的执行引脚。

当节点出现时,可以看到在事件Hit的Other输出引脚和转换节点的Object引脚之间有一根蓝色的线相连(如果没有自动连接,可以手动连上)。连接FirstPersonProjectile节点的输出执行引脚和Set Material节点的输入执行引脚,如图1.21所示。

现在编译、保存,关闭蓝图界面后单击播放按钮进行测试。现在你会发现玩家碰到目标圆柱体时不会改变圆柱体颜色,只有子弹击中时才可以。

时间: 2025-01-30 10:07:47

《Unreal Engine 4蓝图可视化编程》一1.4 创建第一个蓝图的相关文章

《Unreal Engine 4蓝图可视化编程》一第1章 使用蓝图进行对象交互

第1章 使用蓝图进行对象交互 Unreal Engine 4蓝图可视化编程 当开始开发一个游戏时,你想到的第一步应该是建立一个原型.幸运的是,虚幻引擎4和蓝图让基本的游戏功能实现起来比以往任何时候都更容易.这样用户便可以很快地开始测试自己的想法.为了让大家熟悉虚幻编辑器(Unreal Editor)和蓝图(Blueprint),我们将使用一些自带的资源和蓝图建立游戏玩法机制. 本章我们将学习以下内容. 创建新的项目和关卡. 在关卡中置入对象. 通过蓝图改变对象的材质. 使用蓝图编辑器链接所有的蓝

《Unreal Engine 4蓝图可视化编程》一导读

前 言 Unreal Engine 4蓝图可视化编程 游戏引擎(例如虚幻引擎4)作为强大的商业游戏的制作工具,越来越受传统游戏工作室以外的新老游戏开发者所欢迎.虚幻引擎为过去10年中发布的许多最受欢迎的控制台和PC游戏提供了动力,最新版本的虚幻引擎尽可能地包含了开发者所需的工具.这些工具中最具变革性的是蓝图可视化编程系统,其允许非专业程序人员创建和实现游戏机制.用户界面(User Interface,UI)和交互. 本书采用分步方法,指导读者使用可视化的蓝图节点构成蓝图行为,并将它们链接在一起以

《Unreal Engine 4蓝图可视化编程》一第2章 升级玩家的技能

第2章 升级玩家的技能 Unreal Engine 4蓝图可视化编程 在本章中,我们将通过修改玩家控制器(player character)蓝图,来扩展在第1章中创建的射击交互的核心部分.FPS模板中玩家控制器的蓝图--特别是当它与上一章相对简单的目标圆柱体的蓝图比较时--乍一看很复杂.我们将会分析玩家控制器蓝图并将它分解为很多部分,弄明白每个部分的功能,以及它们组合在一起时能够控制角色和射击的原因. 我们可以很容易且快速地使用现有的资源来照着搭建这个蓝图,甚至不需要花时间去思考它是如何完成这些

《Unreal Engine 4蓝图可视化编程》一1.7 小结

1.7 小结 本章通过UE4蓝图创建了第一个原型,迈出了游戏开发的第一步! 在本章中,利用FPS模板创建了一个工程和一个初始关卡.然后设置了一个目标,通过改变自身颜色来响应子弹的射击.最后,设置了一个蓝图,能够快速地创建很多移动的目标.读者在本章所学到的这些技巧,将为后续章节创建更加复杂的交互性行为打下扎实的基础. 你或许会希望花更多的时间来调试游戏原型,包括布局.目标移动速度.由于我们将继续游戏开发,后续很多时候都在候选效果面前徘徊并作出选择.蓝图可视化编程最好的地方就是可以快速地让用户测试自

《Unreal Engine 4蓝图可视化编程》一1.1 创建项目和关卡

1.1 创建项目和关卡 在开始创造游戏元素之前,我们需要创建一个项目,这个项目将包含游戏的内容.为了获取虚幻引擎4(Unreal Engine 4,以下简称UE4),并开始设定我们的项目,需要打开Epic Games launcher,通过它便可以从UE4官网下载UE4引擎.单击Epic Games launcher的UE4标签.如果你是第一次在你的计算机中使用虚幻引擎,你将会看到灰色的未安装(Not Installed)按钮.在Launcher的左侧,会看到一些选项. 工作标签可以让你选择已经

《Unreal Engine 4蓝图可视化编程》一2.1 通过扩展蓝图添加加速技能

2.1 通过扩展蓝图添加加速技能 开始探索FirstPersonCharacter蓝图,以使玩家在关卡中移动时拥有更多的战术选项.没做修改前,玩家还只是局限在一个速度进行移动.我们可以通过蓝图节点监听按键的动作来进行调整,将调整移动速度功能附加在CharacterMovement蓝图组件中. 2.1.1 分解角色移动蓝图 现在我们打开FirstPersonCharacter蓝图.它与第1章的Cylinder- Target_Blueprint蓝图位于同一个文件夹下.在内容浏览器中找到FirstP

《Unreal Engine 4蓝图可视化编程》一1.5 制作移动标靶

1.5 制作移动标靶 既然我们有目标来响应玩家的射击,则可以添加一些挑战性的东西来让项目像一个游戏,一个简单的方法是为目标制作移动的标靶.为了完成这个功能,首先我们需要将目标actor是设为可移动的,然后需要通过蓝图设置逻辑.这样便可以控制目标移动.我们的目标是使目标圆柱体在关卡中来回移动. 1.5.1 改变actor的移动性和碰撞 为了让目标移动,首先需要改变actor的移动性(Mobility)为可移动(Moveable).这个操作将允许对象在玩游戏时可以被操纵.在UE4编辑器的世界大纲视图

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

1.6 改变目标方向 如果现在编译.保存蓝图,然后开始测试游戏,你期待看到什么结果?目标圆柱体会在游戏开始的时候根据设定的速度和方向移动.然而,由于我们没有任何引起目标停止运动的指令,所以目标圆柱体将随着游戏运行一直移动,甚至会穿越场景中的对象.为了解决这个问题,我们需要一个逻辑来周期性的改变目标的方向.这将使目标像移动的标靶一样,在两点之间规律地来回移动. 我们需要设置两个节点,为方向变量设置两个不同的值.拖曳direction变量至事件图表的空白区域并选择设置,生成一个有X.Y.Z坐标的节点

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

2.2 制作瞄准镜效果 现代FPS的核心元素就是以瞄准镜的形式将FOV(field of view,视野)呈献给玩家.这是一个很重要的因素,给游戏带来了精确感和控制感.现在将这一功能的简化版添加到项目中. 在事件图表中靠近Mouse input节点组的空白区域单击鼠标右键,搜索输入动作Zoom(InputAction Zoom)触发器节点并添加.我们希望修改FirstPerson- Camera组件中的FOV值,于是到组件面板中找到FirstPersonCamera并将它拖入事件图表中. 从Fi