![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
unreal
文章平均质量分 87
暮志未晚NAN
这个作者很懒,什么都没留下…
展开
-
73. UE5 RPG 优化投射物以及敌人生成
之前一直遇到发射物的体积过大会在发射时,和地面产生交互,我们可以调整小一些,然后为了防止它和自身产生交互事件。我们可以实现它在生成后,不会触发相关事件,而是在一定时间后。对于这种通用的事件,我推荐创建一个蓝图父类进行设置创建一个基础蓝图类,命名为BP_Projectile默认碰撞球体设置为无碰撞球体因为是私有属性,我们需要在代码中将其设置为可以在蓝图获取,或者将其转移成保护性参数然后在事件开始时,延迟一定时间,启用查询功能,并进行debug。原创 2024-06-21 14:53:34 · 828 阅读 · 0 评论 -
72. UE5 RPG 实现召唤技能数量的限制,并优化技能相关
在上一篇文章里,我们实现了召唤技能,并且能够无限的召唤。所以,这属于一个bug,我们不能无限制的去召唤,这会影响游戏的体验。所以,在这篇里面,我们实现一下对召唤物数量的限制,并优化一些相关的内容。原创 2024-06-19 17:59:39 · 743 阅读 · 0 评论 -
71. UE5 RPG 实现敌人召唤技能
在这一篇文章中,我们要实现敌人的召唤师能够召唤自己的仆从进行作战。要实现这个技能,我们首先创建新的敌人蓝图,用于召唤。接着,我们将实现一个召唤技能基类,在基类中实现在召唤师的周围获取到可以生成的位置点,然后在技能蓝图中在对应的位置生成敌人的Actor,并在后续对其进行优化。接下来,我们将一步步实现此功能。原创 2024-06-19 10:20:08 · 971 阅读 · 0 评论 -
70. UE5 RPG 优化敌人的效果和音效
在前面,我们实现了敌人的大部分功能,在这篇里面,我们将一些需要设置的内容填充一下。这个设置完成以后,我们整理一下,每个敌人都需要设置的音效内容。在填充之前,我们先增加一个角色死亡时播放的音效。在骨骼上添加两个插槽,用于左右手的骨骼位置设置。打开角色基类,创建一个属性用于设置死亡音效。然后在死亡时,播放音效。原创 2024-06-14 17:49:54 · 375 阅读 · 0 评论 -
69. UE5 RPG 使用Gameplay Cue 实现技能表现效果
在上一章中,我们实现了敌人的攻击技能的特效和音效。如果我们在多人模式下打开,发现,其它客户端看不到对应的效果。造成这种问题的原因是因为敌人的技能是运行在服务器端的,它只复制到拥有它的客户端,而敌人的效果对于客户端来说,它们都不拥有此内容,所以无法查看到。那么如何实现每个客户端都可以查看到和听到所需的效果呢,这里就需要使用gameplay Cue去实现了。它可以实现让每个客户端都能获得同样的视效和音效。原创 2024-06-12 21:01:11 · 985 阅读 · 3 评论 -
68. UE5 RPG 优化敌人角色的表现效果
我们现在已经有了四个敌人角色,接下来,处理一下在战斗中遇到的问题。原创 2024-06-10 19:15:23 · 508 阅读 · 0 评论 -
67. UE5 RPG 创建法师敌人角色
我们设置的敌人类型分三种,分别时战士类型,远程射手,和法师类型。在前面,我们创建了战士和射手类型的,还没有法师类型的,在这一篇文章中,我们创建一个法师类型的角色。在里,我们创建了一个新的战士角色,而且也整理角色创建的所需的内容,这里我们将创建敌人的通用的内容省略掉,只解释一下不同的地方。原创 2024-06-10 18:23:24 · 1010 阅读 · 0 评论 -
66. UE5 RPG 实现远程攻击武器配合角色攻击动画
在制作游戏中,我们制作远程攻击角色,他们一般会使用弓箭,弩,弹弓等武器来进行攻击。比如你使用弓箭时,如果角色在播放拉弓弦的动画,但是弓箭武器没有对应的表现,会显得很突兀。所以,我们在这一篇文章里,将介绍如何实现在远程敌人攻击时,武器也能够实现它对应的效果。要实现这个效果,我们需要给武器也增加一个动画蓝图,在动画蓝图中,在角色攻击时,对拉弦的那只手的位置进行监听,然后通过在动画蓝图中,修改骨骼的位置,实现在拉弓时,让弦也根本动画修改。原创 2024-06-09 18:05:26 · 747 阅读 · 0 评论 -
65. UE5 RPG 实现远程攻击
前面,我们实现了敌人的近战普通攻击,还兼容了对于没有武器的敌人的攻击。有近战就要有远程,这一篇,我们实现一下敌人的远程攻击。首先,由于创建的资源增多,我们将GA和GE按敌人和英雄的类别分开,分别在目录下面创建存放GA和GE的文件夹这样条例会更加的清晰,方便我们后续的资源维护。原创 2024-06-07 16:22:22 · 1121 阅读 · 0 评论 -
64. UE5 RPG 创建新的双手攻击怪物
在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武器,使用双手攻击,那么,需要从双手中的某一只去获取攻击位置。在这一篇文章中,我们增加一个新的敌人,它没有武器,靠双手攻击,我们给它两个攻击动画,一个是左手攻击,另一个是右手攻击,来测试我们之前实现的功能是否隐藏了某些bug。而且还能回忆一下之前是如何创建一个敌人的所有数据的。原创 2024-06-06 11:40:44 · 1199 阅读 · 0 评论 -
63. UE5 RPG 兼容没有武器的普通攻击
前面,我们实现了近战攻击技能,敌人通过AI靠近玩家,并且通过AI还能够触发近战攻击的释放。现在我们思考一个问题,如果敌人没有武器,攻击的手段是用的双手,我们该如何去获取它的攻击范围。现在实现的一套是获取武器的攻击范围,我们还没有实现在没有武器的情况下,还需要区分左右手,这样该如何去实现。我们准备增加对应的标签,然后新增一个结构体,用于动画和蒙太奇的映射,最好能把需要获取的骨骼位置也写入到其中,这样如果角色有多个近战攻击动画,我们可以随机一个使用,然后从内部获取所需的数据,进行后续范围判断。原创 2024-06-04 20:21:41 · 687 阅读 · 1 评论 -
62. UE5 RPG 近战攻击获取敌人并造成伤害
在上一篇,我们实现了通过AI行为树控制战士敌人靠近攻击目标触发近战攻击技能,并在蒙太奇动画中触发事件激活攻击的那一刻的伤害判断,在攻击时,我们绘制了一个测试球体,用于伤害范围。在之前实现的火球术中,我们实现的是一个单体伤害技能,在近战中,我们想实现对范围内的敌人判断,并造成伤害。这也是RPG游戏的通常做法。所以,我们将在这篇中,实现角色的死亡逻辑,然后接着实现一个函数去获取一定范围内的敌人并造成伤害。原创 2024-06-03 17:03:37 · 1443 阅读 · 5 评论 -
61. UE5 RPG 实现敌人近战攻击技能和转向攻击
在前面,我们实现了敌人的AI系统,敌人可以根据自身的职业进行匹配对应的攻击方式。比如近战战士会靠近目标后进行攻击然后躲避目标的攻击接着进行攻击。我们实现了敌人的AI行为,但是现在还没有实现需要释放的技能,接下来,我们将实现敌人的使用的技能,刚好回顾一下之前的实现的功能。首先基于之前的伤害技能基类,创建一个近战技能基类命名为近战技能 RPGMeleeAbility我们要实现技能的激活,需要使用到GameplayTag,所以我们增加一个新的技能标签用于激活。原创 2024-05-31 15:54:26 · 1143 阅读 · 0 评论 -
60. UE5 RPG 使用场景查询系统(EQS,Environment Query System)实现远程敌人寻找攻击位置
UE的Environment Query System(EQS)是环境查询系统,它是UE4和UE5中用于AI决策制定过程中的数据采集和处理的一个强大工具。EQS可以收集场景中相关的数据,利用生成器(Generator)针对用户的测试(Test)去筛选符合用户提出条件的最佳项目(Item)。EQS允许开发者设置多种查询条件和测试,以评估游戏世界中的对象和环境。它提供了可视化的测试结果,便于开发者调试和优化查询。EQS常用于AI决策制定,如寻找最佳路径、选择攻击目标或找到安全位置等。原创 2024-05-28 20:52:43 · 1085 阅读 · 0 评论 -
59. UE5 RPG AI行为树的任务
在上一节中,我们实现了通过AI行为树的修饰器,修改行为的流程控制。我们通过流程,可以区分出角色职业,使用哪一套攻击,以及在受击的情况下停止攻击状态。接下来,我们将实现通过AI行为树创建自己的任务,通过任务实现角色的技能以及攻击。原创 2024-05-24 15:33:14 · 689 阅读 · 0 评论 -
58. UE5 RPG AI行为树的装饰器
书接,我们实现了AI一些基础设置,并实现了获取敌人附近的玩家实现了跟随功能接下来,我们将实现区分职业,并根据职业不同设置不同的攻击距离,并且根据职业实现不同的技能施放。原创 2024-05-23 19:10:26 · 911 阅读 · 0 评论 -
57. UE5 RPG 处理AI敌人转向以及拾取物品的问题
在上一篇文章中,我们实现了使用AI行为树控制敌人进行移动,它们可以一直跟随玩家,虽然现在还未实现攻击。但在移动过程中,我发现了有两个问题,第一个是敌人转向的时候很僵硬,可以说是瞬间转向的,这个原因是角色默认是使用控制器切换朝向造成的。第二个问题是敌人现在也可以拾取药瓶喝药,这个不能忍,造成这个原因是因为药瓶是碰撞触发的,没有对拾取的目标进行一个类型区分。在这一篇中,我们主要将这两个问题解决一下,然后再继续进行敌人的AI行为树的制作。原创 2024-05-22 16:45:44 · 900 阅读 · 0 评论 -
56. UE5 RPG 给敌人添加AI实现跟随玩家
在这一篇里,我们要实现一下敌人的AI,敌人也需要一系列的行为,比如朝向英雄攻击,移动,在满足条件时施放技能。这些敌人的行为可以通过使用UE的内置的AI系统去实现。在UE里,只要是基于Character类创建的蓝图,都能够找到相应的AI配置项可以自动控制角色的基类缴AIController,配合AIController的还有两个类,分别是行为树(Behavior Tree)用于存储角色的行为逻辑以及用于存储AI使用的数据的黑板(Blackboard Data)。原创 2024-05-21 21:00:05 · 843 阅读 · 0 评论 -
55. UE5 RPG 处理当前功能在多人模式中的问题
接下来在发射物类的Overlay回调函数中,设置判断和触发碰撞的物体是否和释放者一致,这里,我们也不需要用从GE的Context获取,因为之前这是判断发现触发碰撞是,GE里面数据是空的,证明在碰撞时,数据还未设置,所以,我们在初始化时设置的必能够获取到。我们在客户度攻击敌人时,发现伤害数字并没有在客户端显示,而只是在服务器端上面显示数字,这个问题是在AttributeSet(服务器)调用时,获取到的控制器是服务器的,所以在服务器上播放文字。推理一下,就是火球术直接攻击了自己,造成了伤害,而没有发射出去。原创 2024-05-19 18:25:38 · 964 阅读 · 0 评论 -
54. UE5 RPG 增加伤害类型
在正常的RPG游戏中,都存在一个类别就是属性伤害,比如,在一个游戏里面有一个火属性的技能,它造成的伤害就是火属性类型的,并且它还有可能有附加伤害,比如给予目标一个灼烧效果,每秒造成多少的火属性伤害。目标角色会有一个火属性伤害抵抗,根据百分比减少伤害。比如英雄联盟技能伤害区分物理伤害和魔法伤害,有些技能能够造成两种伤害,比如卡特和永恩。接下来,我们为游戏的伤害增加属性。原创 2024-05-18 22:19:12 · 1138 阅读 · 0 评论 -
53. UE5 RPG 实现伤害数字UI根据状态显示不同颜色和图标
书接上回,我们实现了在AttributeSet里面获取是否触发格挡和暴击的变量。那么,我们就可以将变量传递给PC的函数中,我们是通过PlayerController里的函数去实现的创建伤害数字的UI在PlayerController里面调用的主要原因是,为了获取到技能施放者,然后通过它自身的PC来调用函数,这个函数只在客户端运行。函数内部实现创建了一个显示伤害数字的组件,然后在设置显示伤害数字时,我们将格挡和暴击传递过去。原创 2024-05-16 20:43:48 · 521 阅读 · 0 评论 -
52. UE5 RPG 应用自定义FGameplayEffectContext到项目
既然要使用自定义的类,那么我们需要找到创建的位置,比如我们当前火球术使用的技能类里面,会去创建它通过ASC的MakeEffectContext()去创建的我们进入此方法查看它是如何它的内部实现。原创 2024-05-15 20:31:23 · 846 阅读 · 0 评论 -
51. UE5 RPG 自定义FGameplayEffectContext
首先在Public目录上右键,选择添加一个文件创建一个.h文件然后在Private目录添加一个cpp文件然后,我们在蓝图中定义结构体,并继承FGameplayEffectContext#pragma once //预处理指令 确保这个头文件只被包含(include)一次,防止重复定义。原创 2024-05-14 20:22:18 · 1129 阅读 · 0 评论 -
50. UE5 RPG FGameplayEffectContext
接下来,我想实现处理完伤害时,将伤害的触发格挡或者触发暴击时的逻辑传递到数据集的PostGameplayEffectExecute里面,这样,在处理IncomingDamage时,我们可以通过释放触发格挡或者触发暴击在UI上面进行对应的效果表现。原创 2024-05-14 14:53:57 · 750 阅读 · 0 评论 -
49. UE5 RPG 使用Execution Calculations处理对目标造成的最终伤害
Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分,用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求,灵活地处理和修改游戏中的属性(Attributes)。它和GameplayModMagnitudeCalculation很像,但是可以一次性修改多个属性。它不是只返回一个值,而是直接在函数内部对属性进行了修改。原创 2024-05-12 21:17:31 · 996 阅读 · 0 评论 -
48. UE5 RPG 实现攻击伤害数字显示
在前面的文章中,我们实现了对敌人的攻击的受击效果,并且能够降低目标的血量,实现死亡效果。相对于正常的游戏,我们还需要实现技能或者攻击对敌人造成的伤害数值,并直观的显示出来。所以,接下来,我们要实现一个用户控件,来设置伤害数值的UI表现。并且我们还需要一个用户控件的组件来修改伤害UI显示的数值。在创建完成这些以后,我们还需要实现从AttributeSet里面实现在目标位置(也就是受到伤害的角色位置)创建组件,并实现在每个客户端上面显示数值。原创 2024-05-09 17:45:19 · 1131 阅读 · 0 评论 -
47. UE5 RPG 实现角色死亡效果
在上一篇文章中,我们实现了敌人受到攻击后会播放受击动画,并且还给角色设置了受击标签。并在角色受击时,在角色身上挂上受击标签,在c++里,如果挂载了此标签,速度将降为0。受击有了,接下来我们将实现角色的死亡逻辑,角色血量为0或者小于0时,我们将触发它的死亡功能。原创 2024-05-07 17:29:45 · 1241 阅读 · 3 评论 -
46. UE5 RPG 增加角色受击反馈
在前面的文章中,我们实现了对敌人的属性的初始化,现在敌人也拥有的自己的属性值,技能击中敌人后,也能够实现血量的减少。现在还需要的就是在技能击中敌人后,需要敌人进行一些击中反馈,比如敌人被技能击中后,可以播放击中的动画,并且显示伤害值。我们在这一篇文章中,实现敌人被英雄的技能击中时,会播放受击动画,并且在敌人身上添加一个受击标签,角色在受击时,根据标签判断设置移动速度。原创 2024-05-05 23:03:20 · 1408 阅读 · 2 评论 -
45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害
在RPG游戏中,我们是不会直接修改生命值的属性,是因为在修改角色属性时,需要获取角色的属性并进行复杂的计算,所以,我们正常情况下使用元属性(Meta Attributes)作为计算的中间的媒。在服务器上先将属性计算到元属性上面,然后再通过元属性的数值去修改实际属性。那元属性和普通的属性有什么区别?普通的Gameplay Attribute:它是经常被复制的,在服务器上面修改,然后复制到每个客户端上面。原创 2024-05-02 20:27:20 · 1257 阅读 · 0 评论 -
44. UE5 RPG 初始化敌人的属性
在正常的游戏中,我们应该考虑如何去初始化角色属性,并且要给角色分好类型。比如,在我们游戏中,我们如何去初始化小兵的属性,并且还要实现小兵随着等级的增长而增加属性。而且就是小兵也有类型的区分,比如我们将在后面设置小兵分为三种:战士,游侠,法师。而小兵的属性实现,一般需要策划进行配表实现,将小兵的属性统一性的存入到表格导入项目。原创 2024-04-30 23:08:37 · 1497 阅读 · 3 评论 -
43. UE5 RPG 实现敌人血量显示条
在上一篇文章中,我们实现了火球术伤害功能,在火球击中敌方目标,可以降低敌人20的血量,这个值现在是固定的,后面我们会修改火球的伤害设置。接着,我们也测试了功能是实现的,但是在正常的游玩过程中,你不可能让玩家通过log界面获取敌人血量,这不符合玩家体验,所以,这一篇我们来实现在敌人的上方显示敌人剩余血量的UI。为了实现敌人的血量条,我们首先将创建一个显示血量的用户控件,然后再敌人的基类里面实现在敌人血量变化时,对敌人的血量进行事件委托广播,来告知敌人修改血量。原创 2024-04-26 16:39:16 · 1341 阅读 · 0 评论 -
42. UE5 RPG 实现火球术伤害
上一篇,我们解决了火球术于物体碰撞的问题,现在火球术能够正确的和攻击目标产生碰撞。接下来,我们要实现火球术的伤害功能,在火球术击中目标后,给目标造成伤害。实现伤害功能的思路是给技能一个GameplayEffect,在击中时,给目标应用GE。首先,我们在GameplayAbility(GA)身上增加一个设置GE的类,在创建火球时,在火球身上创建一个GE的实例,在火球击中目标后,使用GE的实例通过目标的ASC应用GE并造成伤害。原创 2024-04-25 15:38:03 · 1506 阅读 · 0 评论 -
41. UE5 RPG 设置火球术的碰撞类型
如果你在蓝图中设置实现,需要在碰撞体这里开启生成重叠事件,并且将对应项设置为重叠,即可实现事件。如果你在代码中设置,那么需要调用对应的函数比如,我在角色上面,设置了,不会响应相机碰撞,但是对发射物类型产生重叠事件,并开启了重叠事件。//设置碰撞体可以和发射物产生重叠//设置碰撞体可以生成重叠事件。原创 2024-04-24 15:01:13 · 1101 阅读 · 0 评论 -
40. UE5 RPG给火球术增加特效和音效
前面,我们将火球的转向和人物的转向问题解决了,火球术可以按照我们的想法朝向目标发射。现在,我们解决接下来的问题,在角色释放火球术时,会产生释放音效,火球也会产生对应的音效,在火球击中目标时,我们需要一个爆炸特效以及爆炸音效。接下来,我们将一步步实现它们。原创 2024-04-23 11:52:21 · 1106 阅读 · 1 评论 -
39. UE5 RPG角色释放技能时转向目标方向
在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住Shift选择方向进行攻击。技能的问题解决,现在人物释放技能时,无法朝向目标方向,接下来我们解决人物的问题。实现思路:我们将使用一个官方的新插件叫Motion Warping来实现它,然后在蒙太奇中设置它的旋转即可。原创 2024-04-21 20:34:54 · 1020 阅读 · 0 评论 -
38. UE5 RPG 修改火球术的攻击方向以及按住Shift攻击
在前面,我们实现了火球术火球的制作,能够在释放火球术时,角色将播放释放技能动画,并实现了对火球的目标的服务器同步功能。我们先回忆一下之前完成的内容。Projectile,里面包含碰撞体和子弹移动组件,后面可以用于碰撞检测和子弹移动的支持。,它在后续会专门用于发射技能。在技能里面,制作了一个生成发射物体的函数,它内部主要实现为生成需要发射的物体,并设置变量,可以设置一个类,它会根据类生成对应的物体,比如你需要角色技能发射一个火球,那么设置火球的类即可。原创 2024-04-21 18:32:06 · 799 阅读 · 0 评论 -
UE5 Prediction 预测
在介绍预测功能前,先问个问题,为啥要有这个功能?这个功能是在网络游戏所需的,单机游戏不需要。网络游戏主要牵扯到一个网络交互的问题,客户端和服务器之间交互是有延迟的,如果将操作数据提交等待服务器返回再运行,玩家会明显的感觉到延迟,影响玩家游戏体验。所以,游戏通常会使用预测技术来立即显示玩家的操作结果,而不必等待服务器的确认。比如在客户端执行技能时,它会将行为上传服务器处理,并且在本地执行预测版本,这一部分内容是可以回退。正常情况下,服务器端返回结果用于同步,没问题就直接用预测版本执行的内容。原创 2024-04-20 19:53:32 · 913 阅读 · 2 评论 -
37. UE5 RPG创建自定义的Ability Task
在前面的文章中,我们实现了一个火球术的一些基本功能,火球术技能的释放,在技能释放后,播放释放动画,在动画播放到需要释放火球术的位置时,将触发动画通知,在动画通知中触发标签事件,然后再技能中监听事件完成火球术的创建。接下来,我们将继续优化火球术技能,并研究点新的东西。原创 2024-04-19 11:16:28 · 1093 阅读 · 1 评论 -
36. UE5 RPG在激活技能时使用蒙太奇动画
在上一篇文章里面,我们实现了一个简单的火球术,创建了火球术的火球,以及能发射它的技能。很简陋,在技能触发的时候,直接在武器的位置生成火球发射出去。在一篇文章里,我们要实现使用技能时,角色会播放攻击动画,然后再某个动画帧,将火球发射出去。所以,我们要使用播放蒙太奇动画来实现动画覆盖,以及动画通知来实现角色手向前攻击时触发火球射出。原创 2024-04-16 18:02:43 · 1239 阅读 · 0 评论 -
35. UE5 RPG制作火球术技能
接下来,我们将制作技能了,总算迈进了一大步。首先回顾一下之前是如何实现技能触发的,然后再进入正题。现在技能可以被激活了,需要我们实现技能内的逻辑,接下来,我们将从简单的开始实现,那就是火球术。原创 2024-04-16 11:14:26 · 1643 阅读 · 0 评论