拾取&&掉落系统

avatar`
Yuewu(罗传月武)
Updated: Jul 1, 2025

介绍

GIS提供非常灵活的道具拾取和掉落系统,本节内容阐述这些的用法以及拓展方式。

拾取系统

GIS默认提供三种拾取系统,分别是道具拾取和库存拾取以及货币拾取。它们都继承自GIS_PickupComponent,并有各自的配置和逻辑。通过调用Pickup函数即可完成逻辑。

道具拾取

该系统用于一次性拾取单个道具,如掉落地面的武器,盔甲等。

为任意Actor添加GIS_WorldItemComponentGIS_ItemPickupComponent即可构成一个ItemPickupActor,其中:

WorldItemComponent:用于在世界中创建一个道具实例。

ItemPickupComponent:用于将WorldItem所引用的道具添加到交互者对应的库存中。

库存拾取/Loot

该系统用于实现一次性拾取多种道具,比如游戏内的宝箱,敌人死亡后的遗物等。

为任意具备Inventory的Actor添加GIS_InventoryPickupComponent即可构成一个InventoryPickupActor,其中:

InventorySystemComponent:可配置所有能够被获取的道具。

ItemPickupComponent:用于将指定集合中的道具添加到交互者对应的库存中。

货币拾取

TODO

拾取案例

光使用拾取组件还不够,在实际使用中,Pickups还要配合交互,UI,物品视觉等内容以提供完整的功能,而GIS的配套项目中已经为你预置了一切,开箱即用。

下面以配套项目提供的蓝图:BP_GIS_ItemPickup为例子,将该蓝图放置到你的关卡中,进行相关配置即可。

该蓝图包含如下组件:

  1. StaticMesh组件:用于控制Pickup的视觉效果。
  2. Pickup组件:可以指定将道具拾取到玩家的什么库存集合,并控制拾成功/失败声音。
  3. SmartObject组件:该组件用于定义PickupActor的交互入口,拥有交互系统组件的Actor(玩家,AI)可以搜索并与之交互,从而触发拾取。
  4. WorldItem组件:可以配置一个道具定义及其数量,并在游戏运行时创建和持有该道具的实例,当拾取成功后,会将该组件持有的道具实例添加到玩家指定的库存集合中。

该蓝图是可复用的,你也可以参考该蓝图,创建自己的版本。比如采用例子特效而非StaticMesh用作视觉表现。


掉落系统

GIS提供两种掉落系统,每个系统会根据配置生成不同类型的Pickup。

道具掉落

你可以为已经挂载了库存组件的敌人,NPC,或者场景中的罐子添加GIS_ItemDropperComponent,并在敌人死亡/Npc死亡,或者罐子破碎时,调用DropperComponent上的Drop来根据配置规则生成拾取物。

ItemDropper可配置如下方面:

  • 从库存的什么集合中掉落道具?
  • 掉落的是InventoryPickup(单个Actor,一键拾取所有。),还是ItemPickup(多个Actor,玩家需要分别拾取。)
  • 掉落时的随机半径浮动,以及掉落原点(可以是掉落者的位置,或者其他Actor的位置。)

货币掉落

同样的,你可以为Actor添加GIS_CurrencyDropperComponent,在合适的时机,调用同样的Drop函数也能生成对应的货币拾取Actor。

自定义

拾取和掉落系统均以组件的形式封装了其核心功能和API接口。

你可以通过蓝图/C++继承自GIS_DropperComponentGIS_PickupComponent,并查看可继承选项以实现自定义类型的掉落/拾取。

logo_small
罗传月武

© 罗传月武 @2025 版权所有.

拾取&&掉落系统 | 虚幻引擎 - 通用库存系统 | 月武的编程之旅