拾取&&掉落系统

介绍
GIS提供非常灵活的道具拾取和掉落系统,本节内容阐述这些的用法以及拓展方式。
拾取系统
GIS默认提供三种拾取系统,分别是道具拾取和库存拾取以及货币拾取。它们都继承自GIS_PickupComponent
,并有各自的配置和逻辑。通过调用Pickup
函数即可完成逻辑。
道具拾取
该系统用于一次性拾取单个道具,如掉落地面的武器,盔甲等。
为任意Actor添加GIS_WorldItemComponent
和GIS_ItemPickupComponent
即可构成一个ItemPickupActor,其中:
WorldItemComponent:用于在世界中创建一个道具实例。
ItemPickupComponent:用于将WorldItem所引用的道具添加到交互者对应的库存中。
库存拾取/Loot
该系统用于实现一次性拾取多种道具,比如游戏内的宝箱,敌人死亡后的遗物等。
为任意具备Inventory的Actor添加GIS_InventoryPickupComponent
即可构成一个InventoryPickupActor,其中:
InventorySystemComponent:可配置所有能够被获取的道具。
ItemPickupComponent:用于将指定集合中的道具添加到交互者对应的库存中。
货币拾取
TODO
拾取案例
光使用拾取组件还不够,在实际使用中,Pickups还要配合交互,UI,物品视觉等内容以提供完整的功能,而GIS的配套项目中已经为你预置了一切,开箱即用。
下面以配套项目提供的蓝图:BP_GIS_ItemPickup为例子,将该蓝图放置到你的关卡中,进行相关配置即可。
该蓝图包含如下组件:
- StaticMesh组件:用于控制Pickup的视觉效果。
- Pickup组件:可以指定将道具拾取到玩家的什么库存集合,并控制拾成功/失败声音。
- SmartObject组件:该组件用于定义PickupActor的交互入口,拥有交互系统组件的Actor(玩家,AI)可以搜索并与之交互,从而触发拾取。
- WorldItem组件:可以配置一个道具定义及其数量,并在游戏运行时创建和持有该道具的实例,当拾取成功后,会将该组件持有的道具实例添加到玩家指定的库存集合中。
该蓝图是可复用的,你也可以参考该蓝图,创建自己的版本。比如采用例子特效而非StaticMesh用作视觉表现。
你可以在配套项目的演示关卡找到更多的预置蓝图。
掉落系统
GIS提供两种掉落系统,每个系统会根据配置生成不同类型的Pickup。
道具掉落
你可以为已经挂载了库存组件的敌人,NPC,或者场景中的罐子添加GIS_ItemDropperComponent
,并在敌人死亡/Npc死亡,或者罐子破碎时,调用DropperComponent
上的Drop
来根据配置规则生成拾取物。
ItemDropper可配置如下方面:
- 从库存的什么集合中掉落道具?
- 掉落的是InventoryPickup(单个Actor,一键拾取所有。),还是ItemPickup(多个Actor,玩家需要分别拾取。)
- 掉落时的随机半径浮动,以及掉落原点(可以是掉落者的位置,或者其他Actor的位置。)
货币掉落
同样的,你可以为Actor添加GIS_CurrencyDropperComponent
,在合适的时机,调用同样的Drop函数也能生成对应的货币拾取Actor。
自定义
拾取和掉落系统均以组件的形式封装了其核心功能和API接口。
你可以通过蓝图/C++继承自GIS_DropperComponent
和GIS_PickupComponent
,并查看可继承选项以实现自定义类型的掉落/拾取。