- 博客(15)
- 收藏
- 关注
原创 高级运动系统笔记03
跳跃动画为了精细化操作,拆分成了跳跃起步,跳跃起步循环,跳跃空中的过程,到开始下降,空中下降循环,落地这些部分,我们的目的是将这些动画按照我们的需求进行拼凑实现单个完整跳跃动画的自然度,当然,不只是跳跃,在某些情况,比如角色脚下的支撑突然消失,此时就会自动播放下降动画,然后落地的时候播放落地动画这些。现在有了主动跳跃的启动状态,这个状态的下一个状态就是跳跃循环状态,也就是跳跃达到最高点的时候会播放的动画的状态,这个状态会进入下落状态,因为JumpApex也是从最高点(或者不是,反正是空中下落)发生的。
2025-12-14 04:12:27
371
原创 高级运动系统笔记02
当根运动速度(Root Motion Speed)低于阈值时,步幅缩放值被强制设为1.0(即不进行缩放),当根运动速度高于阈值时,才根据实际速度比例计算步幅缩放,很多动画的根运动速度可能低于10.0(比如慢走、转身、小幅度移动)当角色移动速度与动画速度不匹配时,本应进行的步幅调整被禁用,导致角色动画与实际移动不协调,还有一种情况就是:在动画开始或停止时,根运动速度会在阈值附近频繁变化,导致步幅扭曲效果频繁开关,产生动画抖动,即使启用了插值,这种频繁的开关也会影响动画流畅度。
2025-12-10 20:02:02
977
原创 高级运动系统笔记01
我们使用混合姿势的时候,会遇到这样的问题,在动画蓝图中,一个Idle类型就分配了许多的不同的子类型,比如手枪idle,步枪idle,如果后续出了其他武器,混合姿势这里会出现更多的枚举…但是如果全堆在一个动画蓝图里,会非常乱,那么这时候就要使用动画层。在此创建一个动画层。动画层也可以允许使用接口,但是不是传统的Interface,而是专属于动画层的Animation Layer Interface,在lyra和ALSV4大量地使用了这种方法在此创建动画层接口。
2025-12-09 19:44:13
658
原创 Lyra的UI系统
上面这张图是Lyra UI的分层模式,可以看到,Lyra的UI由UIManager统一管理,而GameUIPolicy则负责PrimaryGameLayout的添加,显示,移除和LocalPlayer的加入移除通知管理,PrimaryGameLayout负责所有Layer的注册,而Layer则是承载Layout的载体,Layout下面又是一个个ExtentionPointWidget,然后才到我们熟知的Widget层。
2025-07-06 01:04:49
1071
原创 Lyra的库存系统03-装备类的设计
在之前的文章()中有简单说明了一下装备系统的工作流程,这篇就具体说一下Lyra是怎么从武器拾取到装备再到使用的。
2025-06-18 22:56:47
1144
原创 Lyra的库存系统02-物品拾取
上一篇()我们了解了Lyra的物品数据封装方式和一些实现过程,那么物品肯定会有一个交互的过程,其次才是添加数据,这符合我们一般对游戏的常规理解。Lyra有两种交互方式,一种是,另一种是,也就是接触物品以后完成交互;按键交互的绑定是G键,通过触发技能来完成。
2025-06-13 19:41:33
1075
原创 Lyra的库存系统
Lyra存在,这个是物品类,其内部包含一个,LyraInventoryDefinition里面又有各种用来记录信息物品的增删改查由进行管理,然后构建一个结构体来保存实例化后的物品及相关配置。参数导入对应的Definition,然后开辟内存,构建一个Instance物品实例出来AddEntry需要导入模板类以及对应的数量,而ULyraInventoryDefinition用来表示当前添加的物品是什么类型的。需要注意的是,在构建的时候。
2025-06-08 20:26:03
805
原创 # Lyra的GAS系统-技能
Lyra在GameFeature里为角色添加技能(UGameFeatureAction_AddAbilities),整体思路和AddInputMapping差不多。
2025-05-31 14:31:06
922
原创 虚幻五,使用SendGameplayTagEvent不触发GA的问题
其实GA内部是专门提供了一个事件用于相应事件标签触发的,并且还会传输你的FGameplayEventData对象;记得把触发的GA标识上。别忘了GiveAbility(),对应的ASC能够拥有对应的GA。
2025-03-14 16:36:56
427
原创 虚幻5GAS,使用MMC进行装备属性的设计
角色有一个装在技能类模板的数组,这个数组会在角色穿上装备时,一一为角色的ASC添加并启动,作为角色添加的被动技能,类似于原神中武器会有各种各样复杂的效果,其实都可以看作被动技能,然后还有一个GearDefaultEffect,这是主要介绍的,装备的默认属性,然后中间的函数就是负责处理装备时,属性和技能的添加和卸下。打开ASC的Debug面板,可以看到此时角色的Armor是20,根据刚刚的计算:Armor = 20 + GearArmor,由于此时我们没穿装备,所以GearArmor是0,没有问题。
2025-02-27 19:43:42
1793
原创 虚幻5,多人库存无法实现的问题
Server中储存了所有玩家的权威权限(ROLE_Authority),而并非玩家通过SpawnActor生成的Actor,从资产中拖入世界的Actor,默认的权威权限属于服务器,而不是所有客户端,也就是说,如果服务器没有为客户端给予权威,那么客户端在该Actor修改的任何数据,服务器都是不知晓的,也就无法同步给其他客户端。总结:问题在于Client1操作的时候,服务器只给了Client1网络权限而没给过Client2网络权限,这才导致当Client2操作的时候,服务器没有同步数据。
2025-02-27 16:11:12
323
原创 虚幻5保存系统,序列化UObject为空的问题
这样就解决了Actor中的某些UObject无法被序列化的问题,其实就是详细地将UObject的真正需要保存的属性进行保存,如果出现无法保存的属性,例如结构体需要自行重载序列化运算符的话这时候直接保存UObject会造成写入时该Actor的UObject为空的现象!方法,因为如果Actor里的某个成员是个UObject,而这个UObject类里面还有一些无法被写入的属性的时候,最好要使用这种方式,然后在该方法里,对你的UObject里面的具体的某个对象进行序列化。取消对这个组件的SaveGame标记。
2025-02-25 18:43:57
1074
原创 虚幻GAS,自定义标签管理器
在头文件创建一个结构体,然后创建两个静态方法,一个是获取自身的静态引用,另一个是用于初始化的方法,以及创建一个私有静态成员,确保能够获取全局唯一实例,避免不同模块创建多个实例导致标签重复/冲突。Cpp文件中实现静态化初始化游戏标签的方法,调用获取虚幻的标签管理器,然后添加并赋值给头文件中创建的标签成员,这里的FName的命名方式其实就是对应着X.Y.Z,后面那个FString则是对应。在这里,Script/的后面替换成对应的格式:项目名称.刚刚继承的AssetManager的子类的名称。
2025-02-25 16:47:54
1330
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅