- 博客(50)
- 收藏
- 关注
原创 基础属性和装备加成属性的思考。。。
基础属性应该是根据level修改baseValue.提供一个GE_OnLevelChange来在属性改变时对基础属性作出修改。而装备加成属性是一个有Duration的GE,修改的是Magnitude。而不是BaseValue。
2025-04-21 11:24:50
121
原创 06 GE Modifier
总结:Source指GEContext中的InstigatorAbilitySystemComponent,在使用ASC->MakeOutGoingContext()时,已经指定了此ASC为OwnerActor身上的ASC。在我这个情况下,ASC存在于PlayerState上,所以Source因该是PlayerState上的ASC,应该将OwnerActor设置为PlayerState而不是Controller。3.使用计算后的值-基础值。
2025-04-20 22:11:52
280
原创 GAS小坑
前者时GameplayTask,在GA结束时会被自动清理,默认在GA的Owner中接收事件,能传入可选的外部目标接收事件。在GA中,使用WaitGamePlayEvent而不是WaitGameplayEventToActor。
2025-04-17 16:20:38
195
原创 买量课笔记
——————————————————创建骨架——————————————————————————————————————蒙皮——————————————————————
2025-04-16 07:49:22
191
原创 05 GE 各个Component的作用
源码注释那句就是说GESpec的变量移除到这里。使用例子:击退/束缚/眩晕。给一个击退GE,击退GE期间,给与击退技能,持续性地击退,GE结束,技能结束,击退也结束。配置原型看看RemovalPolicy不知道什么意思,卡太久了后面再看看。尝试失败:1.猜想作用是不是取消掉已有激活的相同GA=>不是,不会影响已经存在的已激活的相同类的GA2.猜想是不是在GE给与这个GA后,激活GA会被立马取消=>不是,就算GE被激活也是结束才被移除,并且不是取消。
2025-04-15 02:13:50
451
原创 04 GE - 钳制属性,等级
作用:在这里对生命值进行最后的钳制防止越界。触发时机:一个GE可以有多个Modifier,每个Modifier执行完都会调用一次这个函数,"无周期GE"不触发。无周期GE:持续时间内生效,被移除后失效的GE.比如奥拉夫的大招,蛮王的大招等等,就是一个暂时的Buff。不算修改BaseValue.遗留问题:如何在最大生命值发生改变时保持生命值的百分比。
2025-04-14 19:59:44
337
原创 03 GE - Stack、Duration、Period
小插曲:读源代码不小心动了源代码报错:C++默认不支持Int....... =>去启动验证一下才几百兆很快的。测试,两个Buff,持续时长10秒,每秒减少1.第一个buff生效第五秒拖入第二个buff,观察最终结果(关闭第一次应用时的效果)
2025-04-14 09:08:56
316
原创 01新手村
PS:我怎么记得AcknowledgePossession中的PlayerState就是有效的。这玩意仍理不清,GE不复制给客户端AI意味着他们在客户端属性不变?那我要更新血条敌人怎么办。初始化前提:Controller,PlayerState,Character都有效。这玩意需要包含AbilitysystemComponent.h。客户端:OnRep_PlayerState中。服务器:Pawn的PossessedBy。
2025-04-13 14:58:29
339
原创 UE的AI判断队伍归属的机制:IGenericTeamAgentInterface接口
让我学习到了DeveloperSettings类的使用,还有对AI队伍归属机制的进一步理解,并成功实现使用项目设置配置队伍归属权,拓展性更好。从官方论坛老哥那学来的,优点在于使用项目设置,像配置碰撞一样,能配置碰撞通道对其他碰撞通道的反应,如阻挡,忽略,重叠,全局配置队伍归属,也能配置当前队伍对其他队伍的身份识别,如队友,中立,敌人。总结:AIController最终调用了在GameMode中设置的解析方法来解析项目设置中的二维数组来判断归属,并决定检测还是不检测。所以需要自己在构造函数中构造这个组件。
2025-04-11 23:11:07
1085
原创 开篇 - Unlua+VsCode的智能提示、调试
点击“将文件夹添加到工作目录”,分别将上面生成的Intellisense文件夹和Content/Script文件夹添加到该工作区。然后点击生成智能代码提示,这会在Plugins/Unlua/Intermediate/生成Intenllisense文件夹。为要绑定Lua的蓝图创建模板文件,这会在Content/Script下生成lua文件。如果有这样的效果就大功告成!下次要编写脚本就双击工作区文件。还有智能提示,爽歪歪。打开VSCode,点击文件->将工作区另存为。生成一个空工作区,放置在工程根目录。
2025-04-07 03:40:18
367
原创 ue材质学习感想总结笔记
总而言之,加上x,y就往左上偏移,减去就往左下偏移。每一个图像可以理解为u,v坐标映射rgba。都是固定的,把与之对应的u,v的坐标改到哪,这个像素点就去到哪。那么左上角原来0,0的位置变成了0.1,0.1 右上角就变成了1.1,1.1,那么原来0,0的位置就去到了左上角左上边,所以图像往左上偏移。对TexCoord上的每一个像素加上一个值,如果加上0.1,0.1,
2025-03-27 18:04:47
266
原创 客户端预测一个int32/bool变量+客户端预测播放蒙太奇的模板
要进行的客户端预测复制对应的模板然后改改名字。然后改改验证,改改OnRep_要进行的操作(对所有人,例如更改移动速度),改改Set_要进行的操作(对本地控制,例如缩放FOV)
2025-01-22 02:44:14
420
原创 FabrikIK
TransformSpace设置为WorldSpace说明传入的坐标是WorldSpace下。TipBone:IK链的尖端,设置为左手掌,就是传入的坐标在哪,这个骨头就会到达哪。RootBone:IK链的根,设置为左上臂,让左手掌根据他调整中间骨头的位置。Effector:相当于枢纽点,用于确定坐标。
2025-01-21 04:28:37
134
原创 如何判断一个刚刚产生的Actor,是由服务器产生后复制到客户端而来的,还是在客户端产生的“装饰性”Actor
Actor的Beginplay中,若有Owner说明是参与网络复制。在这个时机可以用复制来的Actor替换掉装饰性Actor,从而降低客户端延迟感。对装饰性的Actor不要设置Owner.对服务器产生的Actor设置Owner.
2025-01-04 21:40:13
86
原创 设置数组其实就是copy
所以要对数组的某个元素进行修改,要使用索引来访问。而不要试图把他放到局部变量中。获取索引后,用GetByRef来访问和修改该元素。
2025-01-03 11:34:54
109
原创 [UE5]一个边走边攻击的AI.使用Simple Parrallel节点。
然后右边攻击目标就是一个无限循环,但使用IsAtLocation节点判断是否离的够近,如果够近就一直循环攻击,如果离得远的就会失败不攻击。左边追击目标是主任务,失败了会导致右边攻击目标不被执行。2.如何制作一个这样的AI:在距离足够近时,循环发起进攻+攻击冷却,持续追击玩家。使用SimpleParallel,左边的任务失败后右边的子树不会执行。=>永远不让左边的子树失败。解释:使用服务节点来隔一段时间更新攻击目标(多人游戏中里的最近的玩家。他失败或者成功追击到目标,都会在0.2秒后继续追击。
2024-11-15 06:25:13
392
原创 UMG ListView的使用方法。Item 与Entry的概念,极其诡异。抓耳挠腮
新建一个ListView,需要填入这个这个表示显示出来的控件长什么样。点个加号创建一个。这个就是Entry。Entry就是显示在界面上的控件。
2024-11-14 00:19:18
396
原创 蓝图中GAS如何在如何检测技能所需要的蓝量,更新UI图标 + 实现技能倒计时
这个封装的函数放在ASC中。通过获取AbilitySpecHandle,就能找到对应的Ability,然后判断他是否可以激活。这样就能获取到所有的技能的可激活状态了来更新UI就行了!Every Nice。在蓝图中调用这个函数需要传入AbilitySpecHandle。彩色的表示能够激活,灰色的表示不能激活。
2024-11-10 00:54:52
252
原创 如何在C++访问创建成长曲线变量(定义在曲线表格中)(API备忘)
获取升到某个等级需要的经验,调用FScalableFlaot::GetValueAtLeve(int32 Level)类型名叫FScalableFloat。这种曲线,在表格中。
2024-11-09 03:53:03
146
原创 Attach时的三个选项是什么意思
他附着之后,我要让他保持原来在世界上的大小缩放等等,位置规则,如果炫选了了保持场景,那么他位置不懂,如果选了保持相对,他的就有原来的比如说偏了20,到现在还是偏了20,不过是相对于现在的父亲偏了20,位置会移动的。对齐到目标的话,会被重置到相对的0,0,0位置。所以想让他保持原来的transform就保持场景,想让他去到某个插槽就对齐到目标。保持相对可以用来干嘛再看看。由于父亲类的限制,门上的这个把手的交互箱子,不会随门转动而移动,我要让他附着到门把手上。
2024-04-28 18:16:13
223
1
原创 Maven打包jar包出来只有几KB,一行代码让一个萌新找了一下午
新建了一个项目,打包出来只有几KB,我发誓我没对Pom文件做过任何修改。所以一个空项目打爆出来也得有20M的。
2024-04-27 18:19:15
427
原创 部署Jar包到Docker,Dockerfile怎么写
这个文件名就叫Dockerfile,等下编写好后要把这俩上传到服务器上的同一个文件夹执行命令的,这个命令会在这个文件夹中找一个名叫'"Dockerfile"的文件,然后再Dockerfile文件里找你要添加的是什么东西,所以命名要一字不差。我是用的是java8,所以这里写上openjdk:8.应该是运行环境吧,等下他就给你下载java8运行环境到这个容器里,也许java17就写 From openjdk:17?前面不知道什么东东,是用来运行的好像,照抄就对了。这是我的Jar包,名字好长。
2024-04-27 16:41:30
410
1
华南农业大学Linux综合性实验部署MySql和三种动态语言Java,Python,Go到Docker容器中
2024-05-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人