- 博客(744)
- 资源 (8)
- 收藏
- 关注
原创 58. UE5 GAS RPG AI行为树的装饰器
书接,我们实现了AI一些基础设置,并实现了获取敌人附近的玩家实现了跟随功能接下来,我们将实现区分职业,并根据职业不同设置不同的攻击距离,并且根据职业实现不同的技能施放。
2024-05-23 19:10:26 1103
原创 57. UE5 GAS RPG 处理AI敌人转向以及拾取物品的问题
在上一篇文章中,我们实现了使用AI行为树控制敌人进行移动,它们可以一直跟随玩家,虽然现在还未实现攻击。但在移动过程中,我发现了有两个问题,第一个是敌人转向的时候很僵硬,可以说是瞬间转向的,这个原因是角色默认是使用控制器切换朝向造成的。第二个问题是敌人现在也可以拾取药瓶喝药,这个不能忍,造成这个原因是因为药瓶是碰撞触发的,没有对拾取的目标进行一个类型区分。在这一篇中,我们主要将这两个问题解决一下,然后再继续进行敌人的AI行为树的制作。
2024-05-22 16:45:44 1052
原创 56. UE5 GAS RPG 给敌人添加AI实现跟随玩家
在这一篇里,我们要实现一下敌人的AI,敌人也需要一系列的行为,比如朝向英雄攻击,移动,在满足条件时施放技能。这些敌人的行为可以通过使用UE的内置的AI系统去实现。在UE里,只要是基于Character类创建的蓝图,都能够找到相应的AI配置项可以自动控制角色的基类缴AIController,配合AIController的还有两个类,分别是行为树(Behavior Tree)用于存储角色的行为逻辑以及用于存储AI使用的数据的黑板(Blackboard Data)。
2024-05-21 21:00:05 1114
原创 55. UE5 GAS RPG 处理当前功能在多人模式中的问题
接下来在发射物类的Overlay回调函数中,设置判断和触发碰撞的物体是否和释放者一致,这里,我们也不需要用从GE的Context获取,因为之前这是判断发现触发碰撞是,GE里面数据是空的,证明在碰撞时,数据还未设置,所以,我们在初始化时设置的必能够获取到。我们在客户度攻击敌人时,发现伤害数字并没有在客户端显示,而只是在服务器端上面显示数字,这个问题是在AttributeSet(服务器)调用时,获取到的控制器是服务器的,所以在服务器上播放文字。推理一下,就是火球术直接攻击了自己,造成了伤害,而没有发射出去。
2024-05-19 18:25:38 1164 1
原创 54. UE5 GAS RPG 增加伤害类型
在正常的RPG游戏中,都存在一个类别就是属性伤害,比如,在一个游戏里面有一个火属性的技能,它造成的伤害就是火属性类型的,并且它还有可能有附加伤害,比如给予目标一个灼烧效果,每秒造成多少的火属性伤害。目标角色会有一个火属性伤害抵抗,根据百分比减少伤害。比如英雄联盟技能伤害区分物理伤害和魔法伤害,有些技能能够造成两种伤害,比如卡特和永恩。接下来,我们为游戏的伤害增加属性。
2024-05-18 22:19:12 1306
原创 53. UE5 GAS RPG 实现伤害数字UI根据状态显示不同颜色和图标
书接上回,我们实现了在AttributeSet里面获取是否触发格挡和暴击的变量。那么,我们就可以将变量传递给PC的函数中,我们是通过PlayerController里的函数去实现的创建伤害数字的UI在PlayerController里面调用的主要原因是,为了获取到技能施放者,然后通过它自身的PC来调用函数,这个函数只在客户端运行。函数内部实现创建了一个显示伤害数字的组件,然后在设置显示伤害数字时,我们将格挡和暴击传递过去。
2024-05-16 20:43:48 668
原创 52. UE5 GAS RPG 应用自定义FGameplayEffectContext到项目
既然要使用自定义的类,那么我们需要找到创建的位置,比如我们当前火球术使用的技能类里面,会去创建它通过ASC的MakeEffectContext()去创建的我们进入此方法查看它是如何它的内部实现。
2024-05-15 20:31:23 1013
原创 51. UE5 GAS RPG 自定义FGameplayEffectContext
首先在Public目录上右键,选择添加一个文件创建一个.h文件然后在Private目录添加一个cpp文件然后,我们在蓝图中定义结构体,并继承FGameplayEffectContext#pragma once //预处理指令 确保这个头文件只被包含(include)一次,防止重复定义。
2024-05-14 20:22:18 1245
原创 50. UE5 GAS RPG FGameplayEffectContext
接下来,我想实现处理完伤害时,将伤害的触发格挡或者触发暴击时的逻辑传递到数据集的PostGameplayEffectExecute里面,这样,在处理IncomingDamage时,我们可以通过释放触发格挡或者触发暴击在UI上面进行对应的效果表现。
2024-05-14 14:53:57 877
原创 49. UE5 GAS RPG 使用Execution Calculations处理对目标造成的最终伤害
Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分,用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求,灵活地处理和修改游戏中的属性(Attributes)。它和GameplayModMagnitudeCalculation很像,但是可以一次性修改多个属性。它不是只返回一个值,而是直接在函数内部对属性进行了修改。
2024-05-12 21:17:31 1225
原创 48. UE5 GAS RPG 实现攻击伤害数字显示
在前面的文章中,我们实现了对敌人的攻击的受击效果,并且能够降低目标的血量,实现死亡效果。相对于正常的游戏,我们还需要实现技能或者攻击对敌人造成的伤害数值,并直观的显示出来。所以,接下来,我们要实现一个用户控件,来设置伤害数值的UI表现。并且我们还需要一个用户控件的组件来修改伤害UI显示的数值。在创建完成这些以后,我们还需要实现从AttributeSet里面实现在目标位置(也就是受到伤害的角色位置)创建组件,并实现在每个客户端上面显示数值。
2024-05-09 17:45:19 1284
原创 47. UE5 GAS RPG 实现角色死亡效果
在上一篇文章中,我们实现了敌人受到攻击后会播放受击动画,并且还给角色设置了受击标签。并在角色受击时,在角色身上挂上受击标签,在c++里,如果挂载了此标签,速度将降为0。受击有了,接下来我们将实现角色的死亡逻辑,角色血量为0或者小于0时,我们将触发它的死亡功能。
2024-05-07 17:29:45 1425 3
原创 46. UE5 GAS RPG 增加角色受击反馈
在前面的文章中,我们实现了对敌人的属性的初始化,现在敌人也拥有的自己的属性值,技能击中敌人后,也能够实现血量的减少。现在还需要的就是在技能击中敌人后,需要敌人进行一些击中反馈,比如敌人被技能击中后,可以播放击中的动画,并且显示伤害值。我们在这一篇文章中,实现敌人被英雄的技能击中时,会播放受击动画,并且在敌人身上添加一个受击标签,角色在受击时,根据标签判断设置移动速度。
2024-05-05 23:03:20 1597 2
原创 45. UE5 GAS RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害
在RPG游戏中,我们是不会直接修改生命值的属性,是因为在修改角色属性时,需要获取角色的属性并进行复杂的计算,所以,我们正常情况下使用元属性(Meta Attributes)作为计算的中间的媒。在服务器上先将属性计算到元属性上面,然后再通过元属性的数值去修改实际属性。那元属性和普通的属性有什么区别?普通的Gameplay Attribute:它是经常被复制的,在服务器上面修改,然后复制到每个客户端上面。
2024-05-02 20:27:20 1434
原创 44. UE5 GAS RPG 初始化敌人的属性
在正常的游戏中,我们应该考虑如何去初始化角色属性,并且要给角色分好类型。比如,在我们游戏中,我们如何去初始化小兵的属性,并且还要实现小兵随着等级的增长而增加属性。而且就是小兵也有类型的区分,比如我们将在后面设置小兵分为三种:战士,游侠,法师。而小兵的属性实现,一般需要策划进行配表实现,将小兵的属性统一性的存入到表格导入项目。
2024-04-30 23:08:37 1610 3
原创 制作场景资源的Prefab
现在游戏内的使用骨骼模型是通过老版的Animator去实现控制的,所以需要将模型切换为Animator第一步,动画类型设置为Generic,创建Avatar模型里面会有对应的Avatar文件我们还需要一个Controller文件,用于控制动画将所需的动画都拖入到控制器内,编辑好Layer,就可以生成多个动画到一个文件动画的名称必须符合要求,动画源文件修改名称位置修改名称位置Animator里的修改位置在带有Animator的对象上面添加一个Fish Animator脚本。
2024-04-30 15:56:29 325
原创 43. UE5 GAS RPG 实现敌人血量显示条
在上一篇文章中,我们实现了火球术伤害功能,在火球击中敌方目标,可以降低敌人20的血量,这个值现在是固定的,后面我们会修改火球的伤害设置。接着,我们也测试了功能是实现的,但是在正常的游玩过程中,你不可能让玩家通过log界面获取敌人血量,这不符合玩家体验,所以,这一篇我们来实现在敌人的上方显示敌人剩余血量的UI。为了实现敌人的血量条,我们首先将创建一个显示血量的用户控件,然后再敌人的基类里面实现在敌人血量变化时,对敌人的血量进行事件委托广播,来告知敌人修改血量。
2024-04-26 16:39:16 1675
原创 42. UE5 GAS RPG 实现火球术伤害
上一篇,我们解决了火球术于物体碰撞的问题,现在火球术能够正确的和攻击目标产生碰撞。接下来,我们要实现火球术的伤害功能,在火球术击中目标后,给目标造成伤害。实现伤害功能的思路是给技能一个GameplayEffect,在击中时,给目标应用GE。首先,我们在GameplayAbility(GA)身上增加一个设置GE的类,在创建火球时,在火球身上创建一个GE的实例,在火球击中目标后,使用GE的实例通过目标的ASC应用GE并造成伤害。
2024-04-25 15:38:03 1623
原创 41. UE5 GAS RPG 设置火球术的碰撞类型
如果你在蓝图中设置实现,需要在碰撞体这里开启生成重叠事件,并且将对应项设置为重叠,即可实现事件。如果你在代码中设置,那么需要调用对应的函数比如,我在角色上面,设置了,不会响应相机碰撞,但是对发射物类型产生重叠事件,并开启了重叠事件。//设置碰撞体可以和发射物产生重叠//设置碰撞体可以生成重叠事件。
2024-04-24 15:01:13 1233
原创 40. UE5 GAS RPG给火球术增加特效和音效
前面,我们将火球的转向和人物的转向问题解决了,火球术可以按照我们的想法朝向目标发射。现在,我们解决接下来的问题,在角色释放火球术时,会产生释放音效,火球也会产生对应的音效,在火球击中目标时,我们需要一个爆炸特效以及爆炸音效。接下来,我们将一步步实现它们。
2024-04-23 11:52:21 1265 1
原创 39. UE5 GAS RPG角色释放技能时转向目标方向
在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住Shift选择方向进行攻击。技能的问题解决,现在人物释放技能时,无法朝向目标方向,接下来我们解决人物的问题。实现思路:我们将使用一个官方的新插件叫Motion Warping来实现它,然后在蒙太奇中设置它的旋转即可。
2024-04-21 20:34:54 1264
原创 38. UE5 GAS RPG 修改火球术的攻击方向以及按住Shift攻击
在前面,我们实现了火球术火球的制作,能够在释放火球术时,角色将播放释放技能动画,并实现了对火球的目标的服务器同步功能。我们先回忆一下之前完成的内容。Projectile,里面包含碰撞体和子弹移动组件,后面可以用于碰撞检测和子弹移动的支持。,它在后续会专门用于发射技能。在技能里面,制作了一个生成发射物体的函数,它内部主要实现为生成需要发射的物体,并设置变量,可以设置一个类,它会根据类生成对应的物体,比如你需要角色技能发射一个火球,那么设置火球的类即可。
2024-04-21 18:32:06 920
原创 UE5 Prediction 预测
在介绍预测功能前,先问个问题,为啥要有这个功能?这个功能是在网络游戏所需的,单机游戏不需要。网络游戏主要牵扯到一个网络交互的问题,客户端和服务器之间交互是有延迟的,如果将操作数据提交等待服务器返回再运行,玩家会明显的感觉到延迟,影响玩家游戏体验。所以,游戏通常会使用预测技术来立即显示玩家的操作结果,而不必等待服务器的确认。比如在客户端执行技能时,它会将行为上传服务器处理,并且在本地执行预测版本,这一部分内容是可以回退。正常情况下,服务器端返回结果用于同步,没问题就直接用预测版本执行的内容。
2024-04-20 19:53:32 1150 2
原创 37. UE5 GAS RPG创建自定义的Ability Task
在前面的文章中,我们实现了一个火球术的一些基本功能,火球术技能的释放,在技能释放后,播放释放动画,在动画播放到需要释放火球术的位置时,将触发动画通知,在动画通知中触发标签事件,然后再技能中监听事件完成火球术的创建。接下来,我们将继续优化火球术技能,并研究点新的东西。
2024-04-19 11:16:28 1263 1
原创 36. UE5 GAS RPG在激活技能时使用蒙太奇动画
在上一篇文章里面,我们实现了一个简单的火球术,创建了火球术的火球,以及能发射它的技能。很简陋,在技能触发的时候,直接在武器的位置生成火球发射出去。在一篇文章里,我们要实现使用技能时,角色会播放攻击动画,然后再某个动画帧,将火球发射出去。所以,我们要使用播放蒙太奇动画来实现动画覆盖,以及动画通知来实现角色手向前攻击时触发火球射出。
2024-04-16 18:02:43 1437
原创 35. UE5 GAS RPG制作火球术技能
接下来,我们将制作技能了,总算迈进了一大步。首先回顾一下之前是如何实现技能触发的,然后再进入正题。现在技能可以被激活了,需要我们实现技能内的逻辑,接下来,我们将从简单的开始实现,那就是火球术。
2024-04-16 11:14:26 1817
原创 UE5 GameplayAbility 源码定义解析
在源码中,我可以看到技能的简介,以及内置的一些函数属性,并且可以看到在技能蓝图中设置的属性在代码里面是如何设置的。这一篇文章主要是对GA的源码定义文件的解析,方便后续学习对GA内部的内容做一个了解,而不是去学习GA的实现。我们实现的技能相当于是一个类,它可以直接被使用,或者实例化以后使用它的实例。首先对源码注释进行一个了解。
2024-04-14 17:45:14 642
原创 34. UE5 GAS RPG实现鼠标点击移动
在前面,我们实现过使用键盘按键wasd去实现控制角色的移动,现在,我们实现了InputAction按键触发,后面,实现一下通过鼠标点击地面实现角色移动。我们将实现两种效果的切换,如果你点击地面快速松开,角色将自动寻路到目标为止。如果你按住鼠标不放,角色将自动朝向鼠标所指向的位置移动。接下来,我们实现它吧!首先在PlayerController(玩家控制器类)里面增加一些参数,用来记录一些信息,主要对应的是查询鼠标悬停的目标是否有敌人,按下的时间,以及自动寻路的参数。
2024-04-09 17:58:58 1765
原创 UE5俯视角游戏案例代码查看
对于初学者来说,UE的项目案例是我们入手的最佳途径,首先代码量少,思路清晰,还能给你提供一个清晰的结构。所以,我创建了一个俯视角的官方案例,来查看一下官方的代码学习一下。首先打开引擎,启动引擎然后创建一个示例,这是ue自带的案例打开源代码,看到案例就几个文件。
2024-04-07 19:32:26 1422
原创 33. UE5 GAS RPG使用增强输入激活GameplayAbility(三)
在前面的文章,我们实现了使用GameplayTag和InputAction的对应绑定的数据,并且添加到了增强输入映射的上下文中,实现了通过按键打印对应的GameplayTag,这只是我们基础需要制作的。目的主要是为了实现在GameplayAblity上面设置对应的Tag,在按下对应按键时,可以激活技能。
2024-04-06 18:46:31 1381
原创 32. UE5 GAS RPG使用增强输入激活GameplayAbility(二)
在上一篇文章中,我们实现了Tag和InputAction的数据对应,后面,我们会通过InputAction触发对应的Tag,然后在GameplayAbility身上设置对应的Tag,然后通过Tag遍历角色身上的所有应用的技能去激活。为了实现这个功能,我们需要增加自定义输入控件,通过此控件增加函数实现输入触发对应Tag触发,数据已经有了,这一篇的内容为创建一个用于增加自定义绑定事件的Component,以及在PlayerController上面使用新的绑定事件。
2024-04-04 15:52:55 1566
原创 31. UE5 GAS RPG使用增强输入激活GameplayAbility(一)
在前面文章中,我们实现了对技能添加并直接激活功能,介绍了GA的相关参数配置。现在,我们还不能通过键位触发技能,正常在游戏时,我们需要通过键位触发技能,实现技能的激活。在UE5里面添加了增强输入,相对于之前的输入操作,切换为了模块化,我们可以通过切换输入上下文,来实现键位输入和InputAction的映射,你可以创建多个上下文蓝图,在角色不同操作时,切换不同的上下文来实现不同的映射,比如,在正常情况下,有一套控制任务的上下文,当角色进入汽车后,我们可以停止当前的上下文,并改为使用汽车操作上下文去实现。
2024-04-04 12:36:27 1213
原创 30. UE5 GAS RPG GamplayAbility的配置项
在上一篇文章,我们介绍了如何将GA应用到角色身上的,接下来这篇文章,将主要介绍一下GA的相关配置项。在这之前,再多一嘴,你要能激活技能,首先要先应用到ASC上面,才能够被激活。
2024-04-02 21:06:06 1014
原创 29. UE5 GAS RPG应用GamplayAbility
GamplayAbility 简称 GA,是UE引擎里的GAS内的功能组件,它的主要功能包括技能冷却时间(CD)和技能消耗的管理,同时也支持网络同步和实例支持。开发者可以在ActivateAbility事件中编写相关的技能逻辑,如角色动作、粒子效果以及角色数值的变动。根据技能是否施展成功,可以调用CommitAbility()或EndAbility()来结束技能。
2024-04-01 20:23:48 1346
原创 28. UE5 GAS RPG同步面板属性(四)
上面几步在前几篇文章中,我们都基本实现了,只有AttributeMenuWidgetController对应的逻辑没有实现。在这一篇里面,我们将实现对应的逻辑,实现对UI数据的同步。
2024-03-30 15:13:42 1284
原创 27. UE5 GAS RPG同步面板属性(三)
我们将在这一篇里实现对AttributeMenuWidgetController创建,可以将数据从AS里同步到UI上面。
2024-03-30 15:12:25 1098
原创 26. UE5 GAS RPG同步面板属性(二)
并且我们实现了第一步,就是在C++里可以创建GameplayTag,并且可以通过单例去获取到Tag的变量。后面属性修改委托也会通过Tag去匹配,这一篇,我们将实现创建一个DataAsset类,用于存储UI显示所需的数据。
2024-03-30 15:12:08 1213
原创 25. UE5 GAS RPG同步面板属性(一)
那么我们需要创建一个自己的AssetManager,打开UE,在Public目录创建一个继承AssetManager的子类创建了此类,我们首先增加一个静态的Get函数,用于获取它的单例。在实现这里,我们要先判断引擎,然后通过引擎获取到资源管理器的单例,获取到的是对其的引用,我们返回时需要加*来返回它的实例。接着,我们覆盖其父类的StartInitialLoading()函数,在内部增加对自定义的标签FMyGameplayTags处理。
2024-03-30 15:11:30 1150
原创 24. UE5 GAS RPG制作属性面板(二)
在上一篇中,我们创建属性面板的大部分样式,这一篇里面接着制作。接下来,我们将一步步实现上面的功能。
2024-03-24 20:15:52 1132
原创 23. UE5 GAS RPG制作属性面板(一)
随着角色的属性越来越多,我们不能每次都进行showdebug abilitysystem进行查看,而且玩家也需要查看角色属性,所以需要一个查看玩家角色属性的面板。在前面,我们创建三种类型的属性我们制作的面板就需要将这三大块区分开来,主要属性增加加点按钮,次级属性只做显示,重要属性在显目的位置显示。
2024-03-23 19:51:33 1368
Substance Painter 和 Unity 同步Standard
2023-09-22
InstantOC Dynamic Occlusion Culling LOD 3.0.0
2022-09-29
three.js开发指南-资源部分
2017-12-25
three.js开发指南-代码部分
2017-12-25
webpack配置es6+less开发环境
2017-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人