🚀 春季促销开始! 🚀 不要错过以7折优惠购买我所有系统的机会! 

点击购买

阵营/队伍集成

avatar`
Yuewu(罗传月武)
Updated: Apr 23, 2025

前言

一款战斗游戏基本上都会存在阵营关系用于决定敌我或者友军。尤其是在战斗伤害计算过程中,需要区分敌我。

UnrealEngine内置GenericTeamAgentInterface是主流的处理这种敌我关系的接口,并且AIController默认实现该接口。同时大多数内置的AI系统(比如感知系统)都强依赖此接口。

不幸的是它并没有暴露给蓝图,同时,不同的项目基本上都需要在其他的Actor上实现GenericTeamAgent接口。

因此,通用战斗系统也提供了这类问题的解决方案,且它是可拔插的,GCS不强制你使用它,并提供轻松的方式将这一机制委托给其它系统或者你自己的实现。

设计图

GCS阵营系统.001

提供的接口与组件

GCS提供了一个接口:GCS_CombatTeamAgentInterface

该接口允许你通过蓝图/C++在Actor或者组件上实现该接口,并允许你从该接口上设置和获取CombatTeamId(类型为Unreal内置的GenericTeamId)。

同时它还提供了一个该接口的组件形式的默认实现GCS_CombatTeamAgentComponent

接口的使用

所有GCS提供的参考内容中,都通过一个静态函数"GetCombatTeamAgentInteface"从Actor(或其第一个实现该接口的组件)获取TeamAgentInterface,并用此接口来决定两个Actor之间的关系。如:是否A可以伤害B,获取目标时是否过滤友方等。

组件的使用

只需要挂载该组件到与战斗系统组件共存的Actor上即可,并为其设置默认的TeamId。

GCS阵营系统.002

该组件还提供队伍变化的事件,因此你可以根据队伍变化,为武器或者角色的服装更新视觉表现,如颜色上区分红蓝。

自定义实现

如果你不希望使用默认提供的组件(比如你已经拥有一个AI系统处理了阵营关系)

你也可以自由地选择在你的其他Actor或者组件上实现该接口,它非常灵活。