Unreal Engine4蓝图编程学习(一)

2023-11-19

学习内容主要介绍了蓝图进行对象交互、升级玩家技能、升级AI敌人、跟踪游戏状态完成游戏体验等内容。

内容来源于:Unreal Engine4蓝图可视化编程。书籍为2017年,与现在版本有一定区别。

一、制作移动标靶

1.1

首先,我们想先创建一个简单的目标Actor,当枪发射子弹击中它时能够改变自身的颜色。

我们任意创建一个圆柱体,然后创建一个材质。我们在材质中创建一个VectorParameter,将其设置为红色。

我们通过材质几点的其他输入引脚给材质添加一些光泽,可以在金属Metallic和粗糙度Roughness引脚设置值。我们创建两个ScalarParameter,将默认值改为0.1,分别连接。

至此我们创建了一个简单的材质。 

 1.2

接着我们为圆柱体增加一个蓝图脚本:

如果通过下面的按钮,则会有三个方法:

 新子类(New Subclass) 仅在选定单个Actor时可用。此方法可将蓝图资产作为Actor子类或其任一子类创建,包含所做的任何Actor属性更改。这个方法最直接。蓝图资产将保留对选定Actor的属性进行的更改。

 子Actor(Child Actors) 方法基于任意Actor类创建蓝图资产。新Actor拥有默认组件,并且关卡编辑器(Level Editor)视口中的每个选定Actor有一个额外的 子Actor组件(Child Actor Component)。子Actor组件将保留对选定Actor属性进行的更改。

收获组件(Harvest Components) 方法基于任意Actor类创建单个蓝图资产(Blueprint Asset),然后收获所有选定Actor的组件,并将组件附加到新Actor。当Actor主要作为其组件的容器时,请使用此方法。举例而言,由于通常只会出现渲染和潜在碰撞这类行为,多个 静态网格体Actor 可有效地组合为拥有多个静态网格体组件的单个Actor。但是,由于AI控制的角色做出的行为拥有Actor级别的自主权,并可能需要单独控制组件并单独访问组件数据,因此这类角色通常需要保留为单独的Actor。

当玩家第一次开始玩游戏时触发事件Begin Play。当另一个actor开始与蓝图控制的现有actor发生触碰或重叠时触发事件Actor Begin Overlap。事件Tick在游戏运行的每一帧触发与之相关的动作,帧率取决于电脑的配置,也影响着事件Tick触发动作的频率。

为了创建检测事件,创建事件命中节点。执行引脚:定义了动作序列中下一步要执行的动作。

我们接着创建Set Material节点,然后设置材质为我们刚刚创建的。

 1.3

接下来我们要保证只有子弹碰到时,会改变颜色。

数据引脚(Data Pins) 用于将数据导入节点或从节点输出数据。数据引脚只能与同类型的相连接,可以连接到同一类型的变量(这些变量有自带数据引脚),也可以连接到其他节点上同类型数据引脚。与执行引脚一样,数据引脚在未连接到任何对象时会显示为空心,在连接到对象后则显示为实心。

Blueprint Data Pin Types

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

1.4

接下来我们制作移动标靶,其实就是给actor设为可移动的。

1.4.1 改变actor的移动性和碰撞

首先我们要改变actor的移动性为可移动:

 接着我们进到蓝图,选中组件,同样的在细节面板将其改为可移动。在碰撞预设中,如果选择Custom,用户可以将对象与不同对象之间的碰撞交互进行个性化设置。为了达到预期,我们只需选择BlockAllDynamic。

 为了移动一个对象,我们需要3个数据:

  • 圆柱体当前位置
  • 移动方向
  • 移动速度

1.4.2 使用变量存储数据

我们先创建方向和速度两个变量,然后我们在细节面板中改变:名称、类型、可编辑和默认值。 

 速度为浮点型,200默认值;方向为vector,默认值(0,-10,0)

1.4.3准备计算方向

首先,我们要取出direction变量的向量并进行归一化,这个操作可将向量的长度转换为一个单位长度,可与其余部分的计算兼容。我们在蓝图中完成操作:

 1.4.4使用delta time关联速度与时间

为了让速度值与方向相关,需要将速度变量与delta time相乘。

delta time是什么?可以见下面的教程:

https://www.bilibili.com/video/BV1CJ411e7WM/

首先FPS=帧速率,60FPS=1秒60帧。Delta time即两帧之间的间隔:

  • 50FPS下,Delta time=1/50=0.02秒。

假如没有使用Delta time移动:

  • Actor1:10FPS    1秒移动了10*1个单位
  • Actor2:100FPS   1秒移动了100*1单位 

使用Delta time移动:

  • Actor1:10*1*0.1=1     1秒内移动了1个单位
  • Actor2:100*1*0.01=1  1秒内移动了1个单位

所以当速度与Delta time相乘后,假设Speed为10,即为每秒10米,而不是每帧10米,能够防止帧速率不稳定时出现的状况。

1.4.5 转换现有位置坐标

 现在我们已经获得了归一化的方向向量和与时间相关的速度值,就需要将这两个数值相乘并将结果赋值给对象目前的坐标。

首先,我们将组件中的StaticMeshComponent拖入事件图表中,从这个节点中我们可以提取包含在对象的网格组件中的任何数据。

下一步我们要获取网格的位置坐标,我们创建Get World Transform节点。接着我们希望将变换分解到组件部分,这样可以在计算中仅适用变换的位置信息,同时保持旋转和缩放不变。所以我们创建Break Transform节点。

下一步我们要将方向向量和浮点型的速度数值相乘。可以创建一个Vector*Float。

最后一步是将速度与方向添加至运算得到的当前位置。我们从最新创建的乘法节点,创建一个Vector+Vector节点。

 接着我们创建一个Make Transform的节点,将引脚连接,得到最终的蓝图:

 1.4.6 更新位置和改变目标方向

得到变化的值后,我们可以通过变换的值来调整actor位置。前面已经使用了Delta time使得速度和方向的变化与帧率无关,因此可以简单的使用事件Tick节点来实现每帧都触发移动动作。

 为了移动目标,我们需要使用Set Actor Transform节点,然后连接引脚。

我们现在还没有任何停止目标移动的指令,我们还需要一个逻辑来周期性的改变目标的方向。使得目标像移动的标靶一样,在两点之间规律的移动。

为此,我们要设置两个节点,为方向向量设置两个不同的值。创建两个direction节点,,Y轴的值分别为10和-10。

现在我们需要一个方法在这两个节点之间转换,使得方向会重复的改变,希望两组动作在每次切换之前,交替执行一次,可以使用FlipFlop节点。

 

最后,我们需要确保在执行方向转换之间有一些延迟。我们创建一个Delay节点

这个节点将允许我们设置一个以秒为单位的延迟时间,而在这个节点以后的执行命令将会被延迟这段时间后执行。最后我们编译并保存查看结果, 

 

可以看到圆柱体在两个定点之间来回的移动。在这一部分,我们设置了一个目标,通过改变自身颜色来相应子弹的射击。我们还设置了一个蓝图,能够快速的创建很多移动的目标,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unreal Engine4蓝图编程学习(一) 的相关文章

  • 动态链接库-DLL探秘

    在Windows世界中 有无数块活动的大陆 它们都有一个共同的名字 动态链接库 在Windows世界中 有无数块活动的大陆 它们都有一个共同的名字 动态链接库 现在就让我们走进这些神奇的活动大陆 找出它们隐藏已久的秘密吧 初窥门径 Wind

随机推荐

  • Ceph入门到精通-Macvlan网络模式

    Docker中的Macvlan网络模式提供了一种将容器直接连接到宿主机网络的方式 使得容器可以拥有自己的MAC地址和与宿主机网络的直接连接 以下是使用Macvlan网络模式的一般步骤 创建Macvlan网络 docker network c
  • 通过uniapp打包生成的ipa安装包如何上架appstore

    通过uniapp打包生成的ipa安装包如何上架appstore 今天刚接手一个发布在android和ios平台的uniapp项目 因为我之前没有上线appstore平台的经验就专门了解了一下之前的上架流程 对于如何获取ios开发证书 发布证
  • 真正解决ScrollView嵌套RecyclerView的显示不全及滑动问题

    很多人都会遇到ScrollView嵌套RecyclerView嵌套的问题 各种嵌套模式 这种嵌套会出现以下几种问题 1 ScrollView和RecyclerView两者都会滑动 而且有时候 滑动会冲突 2 RecyclerView显示不全
  • 基于Bert的提示学习(prompt)文本分类

    1 介绍 1 1任务描述 1 2任务说明 2 建立模型 3 数据加载 4 训练 1 介绍 1 1任务描述 商品同款挖掘 同款商品是指商品的重要属性完全相同且客观可比的商品 商品同款识别的主要目的是从海量结构化和无结构化的商品图文数据库中匹配
  • 双模态情感分析

    1 任务介绍 2 建立模型 1 任务介绍 在做情感分析任务是 一般是通过纯文本进行判断的 或者通过语音来判断 现结合语音 文本双模态来进行情感分析 2 建立模型 from keras layers import from mult emti
  • 基于Qt的OpenGL编程(3.x以上GLSL可编程管线版)---(未知)阴影映射

    未完成 黑近白远 oglmanager h ifndef OGLMANAGER H define OGLMANAGER H include
  • 熄灯问题

    有一个由按钮组成的矩阵 其中每行有6个按钮 共5行 每个按钮的位置上有一盏灯 当按下一个按钮后 该按钮以及周围位置 上 下 左 右 的等都会转变状态 即 如果灯原来是点亮的 就会被熄灭 如果灯原来是熄灭的 则会被点亮 在矩阵角上的按钮改变3
  • 【3D人脸】Open3D学习笔记 一

    最近头疼于点云法向量的计算 实在找不到python的相关资料 想起来Open3D这个专门的工具 一搜还真有 踩了很多坑 记录一下 Open3D官方文档 http www open3d org docs release index html
  • uniapp(二) 之 uniapp 搭建与组件库的引用

    小扩展 rpx responsive pixel 可以根据屏幕宽度自适应 规定屏幕宽度为750rpx 如果iphon6上 屏幕宽度为375px 共有750个像素 则750rpx 375培训 750物理像素 1rpx 0 5px 1物理像素
  • 自定义类型 (结构体)

    文章目录 结构体的声明 1 结构的基础知识 2 结构的声明 3 特殊的声明 4 结构的自引用 5 结构体变量的定义和初始化 6 结构体内存对齐 7 修改默认对齐数 8 结构体传参 结构体的声明 1 结构的基础知识 结构是一些值的集合 这些值
  • Mac VSCode常用快捷键

    cmd option gt cmd option lt 返回上 下一个光标位置 cmd p 打开文件搜索框 control 返回 control shift 前进 补充
  • 工具及方法 - Process Explorer以及类似工具,用来获取系统运行的进程信息

    下载Process explorer Process Explorer Sysinternals Microsoft Learn Process explorer简介 有没有想过哪个程序打开了一个特定的文件或目录 现在你可以找到了 Proc
  • BDA初级分析——可视化图形

    一 时间趋势 时间趋势要如何呈现 Excel函数补充 YEAR 提取日期中的年份 MONTH 提取日期中的月份 DAY 提取日期中的天 HOUR 提取时间中的小时 TEXT 将数值转换为按指定数字格式表示的函数 写法 TEXT value
  • 提交表单--get与post方式

    我们经常在网页上输入信息 然后通过按钮提交 有两种提交方式 get和post get方式效率高但安全性低 post是封装后进行提交安全性高 get方式经常用于搜索 查询 post常用与用户注册登陆等 提交表单标签
  • 【Sibelius】制谱软件 (西贝柳斯)入门笔记

    首先声明 本人非音乐专业 连业余爱好者都算不上 因为小女是音乐生 为了填补代沟 所以就整点音乐相关的软件玩玩 又怕自己忘了 做个笔记 笔记主要是从B站学习的 链接 https www bilibili com video BV1Kb4114
  • 成功解决VS编译时提示“已经在 LIBCMT.lib(xxx) 中定义“

    报错信息 解决方法 在项目右击 gt 属性 gt 连接器 gt 命令行 gt 附加选项中 添加 force
  • 【小程序】使用wxParse解析html

    小程序在开发时 读取到服务器的内容是html格式的 因小程序不支持html格式的内容显示的 因此要对html格式的内容进行编译 可以通过wxParse来实现 wxParse下载地址 实现方法 将下载下来的wxParse文件夹复制到开发项目的
  • Unity(纯C语言单元测试框架!不是那个Unity3d)入门文档

    译者注 译者博客 http blog csdn net lin strong 转载请保留这条 此为Unity手册的翻译 仅供学习交流使用 请勿用于商业用途 翻译的资料是公开的 在docs UnityGettingStartedGuide m
  • 计算员工工资

    请编写一个程序 可以读取一名员工的员工编号 本月工作总时长 小时 以及时薪 并输出他的工资条 工资条中包括员工编号和员工月收入 输入格式 输入包含两个整数和一个浮点数 分别代表员工编号 工作时长以及时薪 每个数占一行 输出格式 输出共两行
  • Unreal Engine4蓝图编程学习(一)

    学习内容主要介绍了蓝图进行对象交互 升级玩家技能 升级AI敌人 跟踪游戏状态完成游戏体验等内容 内容来源于 Unreal Engine4蓝图可视化编程 书籍为2017年 与现在版本有一定区别 一 制作移动标靶 1 1 首先 我们想先创建一个