小队系统

Updated: Apr 16, 2025
小队系统组件
给任意类型的Actor加入一个SquadComponent,它就具备了队伍管理的能力。
一个小队可以是具备实体的,比如
- 某个精英怪挂载了Squad组件,并带领一群小怪。
- 某个玩家角色挂载了Squad组件,并带群一群同伴。
在这种情况下,精英怪和玩家是小队的Leader,小队会以它为中心,且有自己的行为。Leader死亡,整个小队也销毁了。
一个小队也可以是不具备实体的(虚拟小队),比如:
- 一个空Actor只挂载了Squad组件
在这种情况下,此Actor会将自己Attach到小队的LeaderActor上,小队本身并没有实体和行为。
推荐使用虚拟小队,这样的好处有如下几点:
- 小队的Leader可以动态改变,如果Leader死亡,会在小队剩余成员中选择合适的新Leader,如果没有,小队会销毁。
- 动态小队变得可行,比如某个角色有一个技能叫“组队”,会搜寻附近未加入小队的单位动态组成一个新的小队。
小队单位组件
给任意类型的Actor加入一个UnitComponent,它就具备了加入/离开小队的能力。
自动生成小队成员
除了在游戏运行时,动态地为小队添加成员。
你也可以在小队系统组件中,定义默认要生成的小队单位及其数量,并指定默认的命令。
动态小队组成
目前GAIS没有内置的动态组队机制,这里仅仅提供一些思路,毕竟什么样的单位可以组成什么样的小队,在不同的游戏中,其规则会非常不同。
正如之前所说,小队可以是任意类型的Actor,这就意味着,你可以不需要一开始定义好一个小队,而是在游戏运行时,在一定的物理范围内,获取一群相似的单位,并进行动态组队。这会让游戏变得更加动态。
举例:
三个近战士兵,和两个弓箭手,可以组成一个小队,这个小队拥有一个两排槽点的阵型,第一排放置近战士兵,第二排放置弓箭手。当小队结成后,由小队AI控制队伍中各单位的AI行为。