- 博客(43)
- 收藏
- 关注
原创 7.UE5横板2D游戏,添加分类,创建攻击,死亡逻辑,黑板实现追击玩家行为
在行为树下添加分支,selector当没有设置黑板上的targetPlayer时,就执行右边的游荡操作,当设置黑板上的targetPlayer后,开始追击targetPlayer。攻击输入的逻辑如下,在角色不处于攻击状态时,且在idle状态时,可以攻击,并播放一秒的攻击动画后,切换回待机动画。具体添加targetPlayer的方法如下:右键添加装饰器里面的黑板。应用伤害事件,需要在服务器上运行,并调用应用伤害的事件。攻击动画,在角色状态的枚举中添加一个新的枚举。在sprite下添加一个攻击范围的碰撞箱。
2025-01-03 09:56:20
536
原创 28.UE5实现对话系统
通过组件蓝图,也就是下图中的那个东西,实现对话系统对话系统的实现思想:在角色面前判断一个球形中所有实现了对话接口的Pawn,如果该Pawn实现了对话接口,则显示该Pawn的姓名(走到一个角色面前会显示他叫什么),然后点击他的姓名会开始后续的对话。首先创建一个第三人称游戏项目。
2024-11-27 20:20:28
1671
原创 29.UE5蓝图的网络通讯,多人自定义事件,变量同步
按3的时候,调用角色死亡事件,角色死亡会找当场景中的记录员,并更改记录员记录的剩余生命,还记的变量同步的原理吗,由于变量同步是从服务端同步到客户端,所有只有在服务端更改这个记录员的剩余生命时,所有主机的变量才能同步,所以角色死亡事件需要设置在。创建一个Actor蓝图,命名为记录员,只存一个共享变量,命名为当前团队剩余生命,这个记录员只有一个方法,扣除生命(不需要复制,因为变量是同步的,当其中一个客户端更改这个变量后,整个游戏中所有的主机都会同步这个变量)。相反当客户端更改这个变量的时候,只是在本地修改。
2024-11-26 16:06:59
2617
1
原创 26.UE5开场动画,火球冲力
造成冲量的目标是重叠对象,冲力的方向是火球的向前向量,velocitu change选择打开。打开火球Actor蓝图,我们的火球击退效果,需要添加在火球爆炸之后。这个时候攻击怪物,就会对怪物造成击退效果了。可以给摄像头添加每一帧的运动轨迹。首先在场景中创建电影摄像机。
2024-11-23 16:56:47
470
原创 25.UE5时间膨胀,慢动作,切换地图,刷BOSS
返回到我的游戏模式蓝图中,实现每有一只怪物死亡,便将该怪物从在场数组中删除,并判断是否还有怪物,如果小怪都死完了则刷新BOSS,刷新Boss的位置为Boss刷新点。回到BOSS刷新点蓝图,在BOSS刷新点开始运行时,将self传给我的游戏模式,这个时候我的游戏模式就能够拿到BOSS刷新点了。将关卡一的下一关设置为关卡二,将关卡二的下一关设置为开始地图(点击开始游戏,加载游戏,退出游戏那个界面)。将我们以前打怪的关卡命名为关卡一,并复制关卡一到关卡二,并对关卡二进行简单的布局。
2024-11-19 20:21:30
737
1
原创 24.UE5枚举,怪物分类,龙卷风技能
枚举本身就是对一种事物进行分类,本节通过使用枚举将怪物001,怪物002,怪物003分类成小怪,精英和BOSS。并通过让不同怪物掉落不同的掉落物,以及不同的掉落概率。我们通过读表的方式将枚举类型绑定到怪物蓝图上,首先更改怪物基础数据的结构体,和怪物基础表格中的数据。恢复主角状态的代码如下:即还原为初始状态,不攻击,不施法流星火雨,旋转朝向运动,关闭后期盒子。打开怪物总类的构造函数,将怪物类别提升为变量,并赋值。打开怪物的应用任意伤害,当怪物死亡后执行怪物掉落图表。不同怪物类型执行不同的掉落概率和掉落方法。
2024-11-19 19:34:03
1009
原创 23.UE5删除存档
但是存在一个问题,如果存档数据中存在索引为: 0 1 2 3的存档,当索引为1的存档被删除时,那么存档应该变为0 1 2但是存档子项已经把对应的索引写死了,最好的办法就是:删除一个存档之后刷新一下存档列表。由于子项声明了父项对象,且生成时公开,我们可以在创建子项的时候,把父项自身传递过去。这个刷新事件,其实就是点击加载游戏按钮的那一套逻辑。中删除了,并且实际存档(我的存档蓝图)中也被删除了。子项从父项移除后,刷新一下列表即可。做法如下,首先在子项中获取父项对象。这样该行的存档就被从。
2024-11-18 15:11:10
456
原创 22.UE5控件切换器,存档列表,
就算我们选择开始游戏进入游戏,但是如果插槽中已经有存档了,我们依旧需要对这些存档进行读取,并保存在我的存档对象中,但是如果读取存档失败,说明历史中没有存档,这个时候需要新建一个我的存档对象。之前的存档蓝图只能存一份等级,经验,存档日期,现在可以存下一个(等级,经验,存档日期)打包好的数组,我们可以通过这个数组的下标,拿到我们想要的哪一个存档。通过父项的存档列表,遍历出每一条存档数据的索引,并告诉存档子项具体的索引值,存档子项根据这些信息,提取到该子项对应的存档数据:本条存档的数据。
2024-11-18 14:49:40
1304
原创 21.UE5游戏存档,读档,函数库
这一节的内容较为错综复杂,中间没有运行程序进行阶段性成果的验证,只有全部敲完,才能够实现对应功能,所以最好一口气看到最后。
2024-11-16 11:21:37
3036
1
原创 20.UE5UI预构造,开始菜单,事件分发器
如果我们直接再画布上设计我们的按钮,我们需要为每一个按钮进行编辑,复用性太差,能不能在其他的UI蓝图中编辑好,随后就好像其他元素(文本,button)一样,直接放入到我们的画布中?为了在复用时,可以自定义我们通用按钮的样式,需要在图标中设置如下内容,直接将样式拉出来提升为变量,并设置为可编辑实例。为了方便在引入我们自定义个按钮的时候,可以修改文本,图像,需要将其中的文本,图像,按钮都设置为变量。在登录控制器中,实现开始事件,将我们的登录界面添加到玩家的视口。随后在制作开始菜单的时候可以定义我们的样式。
2024-11-15 17:55:26
1361
原创 19.UE5道具掉落
道具的实现效果流程如下:当角色和道具发生重叠时间时,就把角色传给发动道具效果方法,然后通过道具总类的子蓝图重载父类方法的方式,实现不同的道具效果。随后使用封装好的方法,从数组内随机选择的方式,创建我们的数组,数组内容为class,并选择我们想要掉落道具类,固定生成无视碰撞。首先我们使用:范围内随机浮点的方式生成0-100内的浮点数,然后当这个浮点树小于等于50,即有50%的概率掉落道具。在回血道具的图表中重载父类的自定义事件:发动道具效果,调用角色的回血事件来实现。通过道具总类创建子蓝图,回血道具。
2024-11-15 16:13:07
621
原创 18.UE5怪物视野、AI感知、攻击范围、散弹技能
创建自定义事件:怪物远程攻击散弹枪观察下面的图表,看似吓人其实很贱但,就是在生成雷球的时候,在yaw上做一个+-20度的偏移,总共生成三个雷球,呈现扇形打出去的效果三个球的实现效果具体如下。
2024-11-12 19:09:13
1489
原创 17.UE5丰富怪物、结构体、数据表、构造函数
通过图表,获得数据表行,在Data Table中选择我们的新建 的数据表:怪物基础表格,并传入想要获取的数据行的名称:Row Name来读取一行数据,为了让怪物总类的子类自定义的读取想要的表格行,我们需要把Row Name提升为变量:怪物名字。在结构体蓝图中添加变量,如下所示,为了实现不同怪物具有不同的生命值、攻击力,速度,皮肤,是否移动,攻击距离,攻击方式等。并分别为怪物蓝图中的变量:怪物名字,分别赋值怪物001,怪物002,怪物003,记住一定要对应。为不同的怪物添加不同的生命值,攻击力,速度。
2024-11-12 18:25:09
750
原创 16.UE5拉怪机制,怪物攻击玩家,伤害源,黑板,修复原视频中的BUG
前面我们说了黑板的存储是以键值对的形式存在的,我们的key=="目标玩家"上要赋值value=="火球的发射者",利用将值设为对象,self获取AI的黑板,并将黑板中key=="目标玩家"的赋值为value ==Damage Causer。哇,测试了很久才测出来的,视频中,为了实现让受击怪物僵直在原地的效果,有一个立即停止移动的逻辑,导致怪物在ai move to时永远也不可能成功,行为树卡在了ai move to上,1.打开角色蓝图,在发射火球的方法中,做出如下修改,告诉生成的火球,是self生成了它。
2024-11-10 21:08:54
2303
原创 15.UE5等级、经验、血条,魔法恢复和消耗制作
在属性面板蓝图中添加变量,类型为主角引用,并设置为生成公开,和可编辑实例,用来给蓝图传递主角引用,获取主角的属性信息。在角色蓝图中,添加开始事件,在开始事件中创建控件,将主角传递给属性面板,并将控件添加到视口中。这个时候属性面板控件蓝图就能够读取到我们的主角属性了,首先可以直接绑定我们的主角等级。通过设置一个定时器,每秒钟执行委托的恢复魔法事件,进行每秒恢复两点魔法。实现生命条的绑定逻辑,当前/最大生命值的百分比,为进度条。生命条,魔法条,经验条同理,如下。在主角的开始事件中,设置魔法恢复。
2024-11-10 19:38:13
495
原创 14.UE5爆炸伤害,场景变暗,时间轴
为了防止爆炸范围内,怪物被多次施加伤害,需要添加一个数组“被击打的怪物”,里面存储已经被击中的Actor,当find方法查找到的索引值小于0,说明该怪物还没有被爆炸伤害过,这个时候对其施加爆炸伤害,否则不对其施加伤害。双击打开开启后期盒子的时间轴,在时间0时,值为0,结束时间0.15时,值为1,并将这个变化赋予到我们的后期盒子的混合权重上,实现场景逐渐变暗的效果。在角色蓝图中,事件开始时绑定一个后期盒子,因为盒子混合权重默认值为零,所以绑定后只有执行开始后期盒子,才会天气变暗,关闭后期盒子天气变晴。
2024-11-08 16:05:53
492
原创 13.UE5流星火雨,引导施法技能制作
因为频率比较高,所以每次发射2个火球即可,在For loop中定义循环,并将火雨的位置和发射方向定义好输入到生成流行火雨的图表中。下面将详细将流星火雨生成的逻辑。首先明确我们想要实现的效果,希望实现一个在主角头顶,向前一点的空中(随机半径),生成火雨,然后砸向鼠标指向的地面(半径内的随机位置),总体逻辑如下设置光标命中的随机位置将起始位置输出,并起始位置和终点位置,转换为朝向输出。
2024-11-06 15:49:56
549
原创 12.UE5朝向鼠标攻击,状态机入门
利用UE5自带的第三人称模板,实现Charactor的移动和跳跃,直接将UE5自带的第三人称模板中的移动逻辑,复制到我们新建的BP_Hero中。随后获取光标的朝向,并只将yaw设置为角色的朝向,然后播放动画,并设置攻击完毕,恢复将朝向运动方向的设置。由于跳跃状态分为,起跳,滞空,落地,回复待机状态,多个阶段,需要在这个节点中嵌套使用状态机。并按照,起跳,滞空,落地,回复待机状态的顺序创建多个状态。使用1D混合空间,很容易是心啊待机和跑的动画,并输出。同理,当角色不在空中时,从跳跃-->待机/跑。
2024-11-05 19:29:06
423
原创 11.UE5伤害事件,伤害飘字,UI动画
轨道UI空间的图表编辑窗口中,编写逻辑,当构造组件时,将伤害设置为文本,并播放伤害飘字的动画,延迟一秒后删除组件,即从父项中移除。打开火球蓝图,当火球出发重叠事件时候,调用重叠对象的伤害事件,因为我们希望伤害只发生一次,所以调用do once方法。在播放的开始,中间,结束分别设置文本的位置,缩放,透明度以实现伤害飘字的效果。添加变量:伤害来源,设置为,生成时公开,实例可编辑,面向对象的编程思想。在应用伤害之后,在重叠事件处生成发射器,生成火球爆炸的粒子特效。创建UI组件,并调整其中的画布和文本的大小。
2024-11-05 11:00:39
551
原创 10.UE5创建怪物、实现AI行为树,AIController
并让接受执行的Actor进行一个简单的移动,简单移动需要接受两个参数,分别是一个AI的控制器和AI半径内的一个随机位置。利用角色总类创建怪物总类,并创建001怪物,为怪物001绑定网格体和动画蓝图。然后对怪物的AI控制器进行绑定,自动控制AI设定为(已经放置场景中和生成的)至此怪物的动画和AI行为都已经定义好了,需要在地图中插入导航网格体边界。然后对角色的动画蓝图进行修改,将原来获取的001主角,转换为角色总类。双击打开AI控制器,并让AI走向玩家的位置。创建一个AI控制器,并让AI走向主角。
2024-11-01 15:39:26
950
原创 9.UE5创建火球:动画通知、动画分层混合
现在我们发射火球的算法已经写好了,我们希望播放普通攻击动画蒙太奇的时候,发射火球,这个时候就需要使用我们的动画通知,让动画执行到特定事件时调用我们的发射火球事件。因为移动的时候主要播放下半身动画,上半身为插入播放,所以下半身为基动作(base pose),上半身为遮罩动作(blend poses)这个时候存在一个问题,移动攻击时,角色下半身不动,我们需要使用动画分层混合来实现,上半身和下半身动画的混合。自定义事件的逻辑为,获取本身的变换,并传给生成的火球Actor,固定生成,忽略碰撞。
2024-10-31 19:59:58
446
原创 6.动画蓝图,混合空间
动画蓝图里需要获取角色的控制器,将角色的3维速度,转换为数值,然后作为混合空间的输入。速度作为混合空间的1D输入,不同的速度播放不同的动画。将获取到的角色速度提升为变量,并作为蓝图动画的输入。将walk和run插入到1D的数轴上。在动画蓝图的事件里面获取角色的移动速度。将混合空间1D作为蓝图动画进行播放。
2024-10-31 15:21:22
234
原创 5.UE5场景绘制,创建主角,增强输入系统
新建文件夹并创建一个charactor的蓝图,创建角色总类,所有的角色将是他的子蓝图,包括怪物,主角,npc等,创建角色总类的子蓝图,01主角。在使用增强输入系统之前需要创建我们自己的玩家控制器和游戏模式,在根目录下创建游戏基础文件夹,并分别创建这两个蓝图类。在映射上下文中绑定按键,w不需要添加否定,s需要添加否定,这个时候触发将会,传值-1实现后退的效果。选中网格体资产并添加动画,并将法杖作为组件绑定到网格体下,并使用父类套接字,将法杖绑定到手部。创建输入战斗映射情景,并创建一个角色移动的输入。
2024-10-27 17:02:18
578
原创 4.俯视角动作游戏导入资产
注:如果存在虚幻商城添加库之后,我的库里面不显示资产的现象。ctrl + n创建Basic的关卡。之后将所有的资产添加到工程即可。3.导入一个主角资产。
2024-10-25 19:26:09
219
原创 3.UE5开发游戏打包到windos平台
当在VS installar中安装SDK之后就可以成功打包项目了。使用VS Installar安装SDK来打包项目。打包需要安装SDK,打包的环境。打包完成后可以双击exewen。选择空文件夹进行打包即可。
2024-10-25 18:40:18
407
原创 4.UE5中静态资源加载,动态资源加载
和静态加载的方式几乎一样,只有加载使用的函数j和加载位置不一样,加载使用的函数由ConstructorHelper变为了LoadObject和LoadClass,加载位置由构造函数,变换到了运行时的函数中,如tick或者begin中。复制蓝图类的引用,注意加载的是Actor的蓝图类,而不是C++类。加载类(注意UE5的引用类时候的规则,需要在结尾的单引号前加。将对应资产的引用,放到对应的加载语句中,加载不同的资源。静态加载类的语句吗,在复制的引用单引号前面加上。首先为我们的项目添加初学者包。
2024-09-27 19:34:08
712
原创 3.UObject,GameInstance,Actor添加组件
最终声明我们的MyObject对象,并交给指针管理,这是UE5独特的面向对象的思想,staticClass()方法可以理解为默认构造函数,构造出subClass之后交给上级的智能指针管理即UMyObject *ptr。在我们的Actor的构造函数中为这些组件初始化一下,随后用这个Actor生成蓝图对象,使用蓝图编辑器查看,这些默认组件是否已经存在且绑定成功了。在MyPawn中声明MyGameInstance,并在BeginPlay()方法中定义,打印出我们自定义类的信息。可以获取对象的属性和对象的名称。
2024-09-27 19:14:27
614
原创 10.UE5中characte增强输入,添加EnhancedInput导致程序崩溃问题。
注意编译的时候要保证UE编辑器是关闭的,编译之后,再运行程序让UE编辑器启动,否则会导致编译不通过。在GameMode中将DefaultPawn赋值为我们的Character蓝图类。在工程的这个文件中添加EnhancedInput,然后编译工程。将Character中声明的IA组件绑定到IA的真实组件上。点击运行,角色可正常移动,正常视角的转动,跳跃即测试成功。在编辑器的世界设置中选中我们的游戏模式。Character的C++文件的编写。Character头文件的编写。创建Character的蓝图。
2024-09-12 10:27:10
603
1
原创 1.蓝图基础,函数与参数,触发区域
在生成Actor的时候设置弹射物的速度,设置为咱们角色的向前方向,并将速度乘以800。创建Actor并添加Sphere组件,并将我们创建的材质添加到Sphere的材质上。按1生成我们的Actor,并将Actor的位置和向前向量传给Actor。将我们生成Actor的函数,折叠为函数。将我们的Class提升为参数,我们可以给这个函数传参了。让按键1,2,3都可以射出Actor。创建Actor蓝图命名为触发区域。创建材质texture。
2024-09-10 19:18:33
370
原创 9.子弹类型
构造函数中初始化,BeginPlay中动态加载资源,为StaticMeshComponent绑定组件。添加相关的头文件,并声明相关组件。打开关卡蓝图,编写事件。
2024-09-10 15:17:11
242
原创 11.软引用,同步,异步加载资源
加入头文件,并在Actor的BeginPlay方法中实现同步和异步加载。声明完之后,进行编译,并生成蓝图,蓝图类,以及实例中就增加了对应属性。创建Actor,命名为MySoftActor。
2024-09-10 14:31:45
356
原创 16.UE5中C++ Delay延迟实现, Destroy和DestroyComponent,BeginPlay方法不执行的问题
书接上回:动态创建材质实例。
2024-09-07 21:30:03
889
原创 1.UE5中基础的概念
原视频地址:【虚幻5】UE5C++零基础全网全流程开发从入门到进阶教程合集(持续跟新中)_哔哩哔哩_bilibili目录UE5中常用的宏UE5的基础游戏架构认识BeginPlay,Tick,EndPlay函数UE5的日志输出UE5的基础变量类型UE5的基础变量的打印FString、FName、FText区别和相互之间怎么转换容器TArray的用法容器TMap的用法容器TSet的用法
2024-09-06 23:36:47
354
原创 15.ue5的文件管理,C++实现
创建蓝图库函数BlueprintFunctionLibrary的类。进入游戏中,按1键进行测试,读取文件成功,写文件成功。对我们上面声明的方法的进行实现。编译C++代码之后,进行测试。在头文件中声明读写的方法。对我们上面的代码进行测试,记住C++代码编写完后。
2024-09-06 22:05:26
520
原创 14.动态创建材质实例
并绑定到我们的StaticMeshComponent上,并通过UMaterialIntanceDynamic对象对我们的材质进行动态修改。创建一个材质,材质编辑器中,生成Vector1base - Vector4base 快捷键需要配合鼠标左键+数字键。在MyMaterialActor的BeginPlay中动态加载材质,注意LoadObject
2024-09-04 22:57:34
375
原创 7.UE5中Overlap事件绑定,hit事件绑定
1.因为需要在Actor中绑定Overlap事件,该事件只能由特定的的组件Box实现,在Actor下添加Box组件,并对Box进行设置,因为需要产生重叠事件,所以碰撞箱设置为仅查询无物理,事件流程,创建Actor,当角色pawn和Actor发生overlap事件的时候,出发BeginOverlap事件,当角色离开Acrot的重叠区域,响应EndOverlap事件。2.在碰撞箱上绑定碰撞事件,绑定碰撞箱的函数。自行调用,我们仅需要按照代理要求的方法格式,实现这个事件方法即可。这个调用的过程虚幻引擎使用。
2024-09-04 20:17:20
882
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人