1.3版本
这是针对UE5.4的最后一次更新,1.3以上版本则会在UE5.5上进行开发。
很多更新细节体现在了演示项目,这里主要罗列一些主要修改。
战斗流程
新增:AttackResultProcessor支持WorldContext,意味着在蓝图中可以使用更多的节点(比如SpawnActor)。
碰撞检测系统
碰撞检测实例不再使用GameplayEventData作为TraceInformation,并由Set/GetTraceSource和Set/GetAttackRequest代替。
提供AsyncAction_CollisionTrace,方便使用。
子弹系统改进
修复:正确同步Hit事件。
改进:子弹的Trace信息放在子弹定义上,同样支持一个子弹关联多个Trace。
改进:子弹现在可以配置是否穿透角色,场景。
改进:子弹系统进一步完善,支持穿透,子弹命中生成子弹(链)
演示内容改进
武器相关的TargetingPreset会过滤掉武器类型Actor。
移除演示内容中的Posture(躯干)属性,因为这太特定于游戏机制了:用户仍然可以完美防御/弹反,但其造成的结果可以自行定义。
将DemoCombatCore中的运动控制逻辑单独解耦为一个简单的运动系统,1是为了可以在不同的项目中不用重新造轮子,2是提供更清晰的战斗系统整合任意运动系统的方式。
修正武器动画层在某些情况下没有正常link/unlink。
碰撞检测系统
规范TargetingSourceContext的用法。
TraceInstance使用TargetingSystem进行目标获取。其中,TargetingSourceContext中的内容如下:
SourceActor是与Trace关联的PrimitiveComponent的Owner,如:Trace捆绑的武器Mesh,SourceActor就是武器;Trace捆绑的子弹的Shape,SourceActor就是子弹。
InstigatorActor:所有的Trace实例都由CollisionSystem组件创建和管理,所以CollisionSystem组件的Owner就是InstigatorActor。
锁定系统
“LockIndicator组件”强化了,你可以填一堆Indicator定义,当角色被锁定后会自动创建WidgetComponent并与UI进行关联。默认情况下,只有LockOn UI和角色血条UI会在被锁定时显示。
简单来说,这是一个方便地在被锁定目标上动态创建一堆世界UI的组件。
阵营系统
GCS_CombatTeamAgentComponent允许在设置TeamId时,也会同步设置到Pawn所属的Controller上(如果Controller实现了GenericTeamAgentInterface)
迁移指南
打开你项目的DefaultGameplayTags.ini,并在[/Script/GameplayTags.GameplayTagsSettings]下添加如下的Tag重定向。
1[/Script/GameplayTags.GameplayTagsSettings]2+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Tailsman",NewTagName="GIS.Item.Tailsman")3+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon",NewTagName="GIS.Item.Weapon")4+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Axe",NewTagName="GIS.Item.Weapon.Axe")5+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.BowAndArrow",NewTagName="GIS.Item.Weapon.Bow")6+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.GreatSword",NewTagName="GIS.Item.Weapon.GreatSword")7+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Hammer",NewTagName="GIS.Item.Weapon.Hammer")8+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Pistol",NewTagName="GIS.Item.Weapon.Pistol")9+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type.Weapon.Sword",NewTagName="GIS.Item.Weapon.Sword")10+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Skill",NewTagName="GIS.Item.Skill")11+GameplayTagRedirects=(OldTagName="GIS.Item.Type.Potion",NewTagName="GIS.Item.Consumable")12+GameplayTagRedirects=(OldTagName="GIS.Equipment.Type",NewTagName="GIS.Item")13+GameplayTagRedirects=(OldTagName="GIS.Item.Type",NewTagName="GIS.Item")14从1.3开始,必须使用GCS_AbilitySystemGlobals,你可以参考案例项目中的DefaultGame.ini15[/Script/GameplayAbilities.AbilitySystemGlobals]16+GlobalAttributeSetDefaultsTableNames="/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats"/Script/Engine.CurveTable'/Game/GenericGame/CombatSystem/Extras/DataTables/CT_GCS_DefaultStats.CT_GCS_DefaultStats'17AbilitySystemGlobalsClassName="/Script/GenericCombatSystem.GCS_AbilitySystemGlobals"18+GameplayCueNotifyPaths=/Game/GenericGame/CombatSystem/Extras/Cues19;AbilitySystemGlobalsClassName="/Script/GenericGameplayAbilities.GGA_AbilitySystemGlobals"20PredictTargetGameplayEffects=true21bUseDebugTargetFromHud=true
