UE4 蓝图教程(二) 蓝图,消灭香蕉

2023-11-11 11:10
文章标签 ue4 教程 蓝图 香蕉 消灭

本文主要是介绍UE4 蓝图教程(二) 蓝图,消灭香蕉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

蓝图

蓝图是虚幻4中的可视化脚本系统,是一种快速开发游戏原型的方法。无需逐行编写代码,您可以直观的做所有事情:拖放节点,将它们的属性设置在UI中,并拖动连接线来连接。除了成为一个快速的原型开发工具之外,蓝图还使得非编程人员可以很快速地上手编写脚本。
注 : 博主水平有限,如有疑问,请参见 原英文教程

在本教程中,您将用蓝图:
1 设置一个从上向下看的摄像机
2 创建一个由玩家控制的具有基本动作actor
3 设置玩家输入
4 创建一个物品,当玩家碰到它时消失。

开始
下载 starter project并解压它。打开项目文件夹并打开BananaCollector.uproject。
注意:如果你收到提示,说这个项目是用旧版本的虚幻4创建的,没关系(引擎经常更新)。您可以选择打开副本,也可以选择在合适的位置进行版本转换。
如果一切正常,你会看到下面的场景。这是玩家移动并收集物品的地方。

我已经将项目文件夹分类了以便于查找文件,正如您所看到的:

如果你愿意,你可以使用红色区域的按钮来显示或隐藏Content面板。
创建玩家
在内容浏览器中,找到Blueprints 文件夹。单击Add New按钮并选择Blueprint class。
因为你想让actor 能够接收到玩家的输入,所以Pawn 类是合适的。从弹出窗口中选择Pawn ,并将其命名为BP_Player。

注意:Character 类也可以工作。它甚至在默认包含了一个移动组件。但是,你将会实现你自己的移动功能,所以用Pawn 类就足够了。

附加相机
相机是玩家观察世界的方法。你需要创建一个相机,指向玩家的视线方向。
在内容浏览器中,双击BP_Player,在蓝图编辑器中打开它。
要创建一个相机,请来到组件面板。点击Add Component并选择Camera。

想让相机从上往下看,你需要把它放在玩家上面。选择了相机组件后,转到Viewport选项卡。通过按W键激活移动操作器,然后移动到(-1100,0,2000)。或者,您可以直接在将坐标输入。它位于详细信息面板的Transform/Location字段下。

如果你看不到相机,按下F键。
接下来,通过按E键激活旋转。在y轴上旋转相机到-60度。
玩家代表
红色的方块代表玩家,所以你需要使用一个静态的网格组件来显示它。
首先,通过单击组件面板中的空白空间取消选中的相机组件。否则,下一个添加的组件将会是一个相机的子组件。
单击Add Component 并选择 Static Mesh。

要显示红色方块,选中StaticMesh组件,然后切换到细节选项卡。单击位于Static Mesh右侧的下拉框并选择SM_Cube.。

这就是您应该看到的场景(如果您没有看到它,您可以在Viewport中按F):

现在,该创建Pawn了。单击编译并返回到主编辑器。
产生玩家
在玩家控制Pawn之前,你需要指定两件事:
1 玩家将控制的Pawn类
2 Pawn如何生成
通过创建一个Game Mode类来完成上述任务。

创建游戏模式
游戏模式是一个控制玩家如何进入游戏的类。例如,在多人游戏中,你可以使用游戏模式来确定每个玩家的产生的位置。更重要的是,游戏模式决定了哪些Pawn玩家将使用。
进入内容浏览器,确保你已经进入了Blueprints文件夹。单击Add New按钮并选择Blueprint class。从弹出窗口中,选择Game Mode Base ,并将其命名为GM_Tutorial。

现在,您需要指定一个默认的Pawn 类。双击GM_Tutorial 打开它。
转到详细信息面板并查看类的部分。单击Default Pawn Class 的下拉框,并选择BP_Player。

在你使用你的新游戏模式之前,关卡需要知道使用了哪种游戏模式。你可以在World Settings中指定。单击Compile并关闭蓝图编辑器。每个关卡都有自己的设置。您可以通过选择Window\World Settings来访问这些设置。或者,您可以在工具栏选择Settings\World Settings来设置。

一个新的“World Settings”选项卡将在Details选项卡旁边打开。从这里,单击GameMode Override 的下拉列表,并选择GM_Tutorial。

现在您将看到这些类已经更改为在GM_Tutorial中所选中的类。

您需要指定玩家在何处生成。你可以通过将一个Player Start actor放入这个关卡中来实现这个目标。
设置游戏开始时,玩家所在的位置
在生成一个玩家的过程中,游戏模式寻找一个玩家开始的角色。如果游戏模式找到了,它会尝试在那里生成玩家。
要想让玩家启动,可以模型面板中搜索Player Start。点击和Player Start 从模型面板开始进入Viewport。释放鼠标将它放置好。

你可以把它放在你喜欢的地方。完成后,到工具栏并单击Play。将会在你放置Player Start.的地方生成。

想要退出游戏,单击工具栏中的Stop按钮或按Esc键。如果你看不到光标,请按Shift+F1。
如果你不能四处移动,那就不是一个游戏了,对吧?您的下一个任务是设置输入参数。
配置输入
为操作分配一个键称为键绑定。
在虚幻引擎中,您可以设置键绑定,当您按下它们时,将触发一个事件。事件是当某些操作发生时执行的节点(在这种情况下,当你按下这个键)。当触发事件时,连接到事件的节点都将执行。

这种绑定键的方法十分方便。
例如,您将鼠标左键单击并将其命名为Shoot。任何可以射击的actor 都可以使用Shoot事件来判断玩家是否按下了左键。如果您想要更改键,您可以在输入设置中更改它。

Axis 和Action 映射
要查看输入设置,请点击Edit\Project Settings.。在左边,选中Engine中的input。

Bindings 部分是您将设置输入的地方。

虚幻提供了两种创建键绑定的方法:
1 Action Mapping:
它只存在两种状态:按下或没有按下。当您按下或释放键时,事件才会触发。用于那些没有中间状态的动作,比如射击。
2 Axis Mapping:
它输出的数值称为axis value (稍后会详细说明)。Axis事件每个帧都会触发。通常用于鼠标控制准星的动作。
对于本教程,您将使用Axis Mapping。

创建移动映射
首先,您将创建两个axis Mapping组。组允许您将多个键绑定到一个事件。
要创建一个新的axis映射组,需要单击Axis Mappings右侧的+号。现在创建两组,并将它们命名为MoveForward和MoveRight。

MoveForward将处理前后移动。MoveRight将处理左右移动。
你将把移动映射到四个键:W、A、S和D。当前,只有两个槽可以映射键。通过单击组(MoveForward)名称旁边的+号,向每个组添加另一个axis映射。

映射一个键,需要单击下拉列表来弹出一个键列表。将W和S键映射到MoveForward。将A和D的键映射到MoveRight。

接下来,您将设置输入Scale大小。
Axis 和Scale值
在设置Scale字段之前,您需要了解它们是如何使用axis 值工作的。
axis值是一个数值,如何使用它由它输入的类型决定。按钮或键在按下时输出1。根据你的方向和你推进的距离,输出-1到1之间的值。

你可以使用axis 值来控制一个pawn的速度。例如,如果你把图钉推到边缘,axis 的值是1。如果你把它推到一半,它就会是0.5。
通过将axis值与速度变量相乘,你可以调整图钉的速度。

您还可以使用axis值指定沿着轴的方向。如果你将一个Pawn的速度乘以一个正轴值,你将得到一个正的偏移量。使用负axis值将导致负偏移。将这个偏移量添加到Pawn的位置将确定它移动的方向。

由于键盘键只能输出1或0的axis 值,因此可以使用scale值将其转换为负数。它的作用是取axis值然后乘以它的scale。
如果你把正(轴的值)和负的(比例)相乘,你会得到一个负数。
通过单击scale字段并输入-1来设置S和A的scale值。

接下来,有趣的部分是:让Pawn移动!关闭Project Settings,然后双击BP_Player,在蓝图编辑器中打开
移动玩家
首先,您需要为您的移动映射获取事件。在事件节点图中右击一个空白区域,以获得一个节点列表。从菜单中搜索MoveForward。添加在Axis Events中列出的MoveForward节点。注意,您正在寻找在Axis Events下的红色节点,而不是在Axis值下的绿色节点。
重复这个过程。

现在,您将为MoveForward设置节点。
使用变量
要移动,你需要指定兵的移动速度。指定速度的一种简单方法是将其存储在一个变量中。
要创建一个,请转到My Blueprint选项卡,并单击“Variables 部分右侧的+号。

选中新变量后,请转到Details选项卡。将变量重命名为MaxSpeed。然后,将变量类型改为Float类型。通过单击Variable Type 旁边的下拉框并选择Float。

接下来,需要设置默认值。在您设置它之前,您需要在工具栏中单击Compile。
选中变量,返回到详细信息面板。转到默认值部分,将MaxSpeed的默认值修改为10。

接下来,从My Blueprint中拖动MaxSpeed变量到节点图视图中。在菜单中点击Get。

现在,你将把MaxSpeed和axis 值相乘,以确定最终的速度和方向。添加一个float * float节点,并把Axis 值和MaxSpeed都和它相连。

得到玩家方向
为了前进,你需要知道Pawn的位置。幸运的是,虚幻有一个节点用于这个目的。添加一个Get Actor Forward Vector 节点。

接下来,添加一个Add Movement Input 节点。该节点将接受一个方向和值,并将其转换为一个存储的偏移量。像这样连接节点:

白线代表一个执行链。换句话说,当玩家输入axis移动时,将产生一个事件,该事件将执行InputAxis MoveForward 节点。白线表示,一旦发生这种情况,将执行 Add Movement Input 节点。
Add Movement Input节点接受以下输入:
1 Target:目标,设置为self,在本例中为玩家自己(红色框)。
2 World Direction:世界方向,移动目标的方向,在本例中是玩家所面对的方向。
3 Scale Value:比例值:在这个例子中是最大速度axis值(记住是在-1到1之间的值)。
重复这个过程,但是用Get Actor Right Vector.取代Get Actor Forward Vector,不要查看上面的说明, 看看你能做多少!

添加偏移量
要实际移动Pawn,你需要通过添加移动输入计算出偏移量,并将其设置到Pawn的位置。
基本上,你要做的就是让玩家在游戏的每一帧中移动一小部分,因此你需要将动作添加到一个Event Tick事件中,这是每一个帧都会触发的的。
转到节点图中的Event Tick节点。它的左边应该是灰色的,如果没有,就创建一个。

要获得偏移量,创建一个Consume Movement Input Vector节点。要添加偏移量,创建一个 AddActorLocalOffset 节点。然后,把它们连起来:

基本上,这意味着在游戏的每一帧中,你将获得任何已有的动作输入,并将它添加到actor的当前位置。
单击Compile,然后返回主编辑器并单击Play。你现在可以四处走动了!

不过,这儿还有一个小问题。该事件是帧事件,每帧都会触发,配置高的机器能够以更快的速度渲染帧。移动节点将会执行得更频繁。这就导致了在置高的机器上会以更快的速度移动,反之亦然。
要解决这个问题,你的运动需要保持独立的帧速率。
注意:我已经设置了一些键绑定,这些绑定将显示帧速率依赖的影响。按0将帧速率设为60,并按1重新设置默认。在不同的帧速率中移动,以观察速度的差异。
帧速率独立
帧速率的独立性意味着无论帧速率如何,所有的结果都会有相同的结果。幸运的是,在虚幻引擎中实现帧率的独立是很容易的。
退出游戏,然后打开BP_Player。接下来,转到到您的Event Tick节点,并查看Delta Seconds秒。

Delta秒是上次事件发生后的时间。通过将你的偏移量与时间相乘,你的运动就会独立于帧速率。
例如,你的Pawb的最大速度是100。如果一秒钟过去了,你的兵将会移动全部100个单位。如果半秒过去了,它将移动50个单位。

如果移动依赖于帧速率,那么无论帧与帧之间的时间间隔为多少,每一帧Pawn都会移动100个单位。
要将您的偏移量与Delta Seconds相乘,添加一个vector * float节点。然后,连接起来:

因为在帧之间的时间(Delta Seconds)非常小,你的Pawn会移动的非常慢。通过将MaxSpeed的默认值更改为600,来解决这个问题

祝贺您,您已经成功地实现了帧率独立!

你可能已经注意到,立方体能穿过所有的东西。要解决这个问题,你需要了解碰撞。
带上安全帽,因为你要与一些碰撞理论正面交锋!
Actor碰撞
当你想到碰撞的时候,你可能会想到汽车撞在一起了。幸运的是,虚幻引擎的碰撞更安全。
为了能够碰撞,一个actor 需要一个碰撞空间(通常称为碰撞)。你可以使用以下的任意一个:
1 Collision mesh:当一个网格被导入时,这些是自动生成的(如果启用的话)。用户还可以使用3D软件创建一个自定义的碰撞网格。这个红色的盒子已经有了一个自动生成的碰撞网格。
2 Collision component:它们有三种形状:盒子、胶囊和球体。您可以通过组件面板添加它们。一般用于简单的碰撞。
下面是一个人物及其碰撞的例子。

当一个actor的碰撞空间遇到另一个actor的碰撞空间时发生碰撞。

现在是时候开启碰撞了
启用碰撞
你可能想知道为什么这个盒子没有碰撞,即使它有一个碰撞网。当您移动一个actor时,虚幻引擎只考虑到根组件的碰撞。因为你的Pawn的根组件没有任何碰撞检测,所以它会穿过所有的东西。
注意:一个没有发生碰撞的actor仍然可以阻止其他物体。但是,如果你移动actor,它不会与任何东西相撞。

所以,StaticMesh要碰撞,需要根组件。要做到这一点,去组件面板。然后,左击StaticMesh 拖动到DefaultSceneRoot。释放左击使StaticMesh成为新根组件。

碰撞前还有一件事要做。切换到事件节点图并找到到AddActorLocalOffset节点。找到Sweep 并将其设置为true,勾选复选框。

基本上,AddActorLocalOffset将碰撞对象的位置。Sweep确保actor 与新旧位置之间的任何东西发生碰撞。回到主编辑器,点击Play。立方体现在会与地面碰撞!

你要做的最后一件事是创建一个当玩家碰到它时消失的物品。
创建一个item
一般来说,item是玩家可以收集到的物品。您将使用BP_Banana作为收集的item
要检测玩家何时该触碰到到item,您需要一个事件节点,该节点在发生冲突时触发。您可以使用冲突响应来生成这样的事件。
碰撞响应也决定了一个Actor与另一个Actor碰撞时的反应。碰撞响应有三种类型:忽略、重叠和阻塞。下面是它们如何相互作用:

尽管您可以使用Overlap 或Block,本教程只会向您展示如何使用Overlap 。
设置碰撞反应
退出游戏,然后打开BP_Banana。选择StaticMesh组件,然后进入Details面板。Collision 部分是你设置碰撞响应的地方。

如您所见,大多数设置都是灰色的。为了使它们可编辑,左键单击Collision Presets的下拉菜单。从列表中选择Custom。

现在,您需要指定立方体的碰撞响应项
组件有一个称为object type的属性。对象类型可以方便的把相似的actors组合在一起。您可以在这里关于对象类型的内容。
由于立方体的类型是WorldDynamic,所以您要在Collision Responses部分更改该类型的碰撞响应。,改变了worldddynamic的碰撞响应。通过左击勾选“WorldDynamic”右边中间的复选框来完成这个操作。

处理碰撞
要处理碰撞,需要使用overlap 事件。进入组件面板,右键单击StaticMesh。从上菜单中,选择Add Event\Add OnComponentBeginOverlap。

这会将 OnComponentBeginOverlap (StaticMesh) 节点添加到事件节点图中。

最后,创建一个DestroyActor 节点并将其链接到OnComponentBeginOverlap (StaticMesh) (StaticMesh)节点。

放置物体
关闭蓝图编辑器,然后确保您在蓝图文件夹中。
开始将香蕉放置到水平,通过左击和拖动BP_Banana进关卡视口。

点击 Play 开始收集香蕉!

这篇关于UE4 蓝图教程(二) 蓝图,消灭香蕉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/389631

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码

PHP APC缓存函数使用教程

APC,全称是Alternative PHP Cache,官方翻译叫”可选PHP缓存”。它为我们提供了缓存和优化PHP的中间代码的框架。 APC的缓存分两部分:系统缓存和用户数据缓存。(Linux APC扩展安装) 系统缓存 它是指APC把PHP文件源码的编译结果缓存起来,然后在每次调用时先对比时间标记。如果未过期,则使用缓存的中间代码运行。默认缓存 3600s(一小时)。但是这样仍会浪费大量C

Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。 今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语等。 开发环境(其实多语种这块根环境没太大关系):win10,Qt.5.12.10 一.先用QtCreator创建一个简单的桌面程序 1.工程就随便命名“LanguageTest”,其他默认。 2.在设计师

如何打造个性化大学生线上聊天交友系统?Java SpringBoot Vue教程,2025最新设计思路

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小程序/安卓实战项目 大数据实战项目 ⚡⚡文末获取源码 文章目录