收获系统:HarvestSystem
用途:用于野外植物、树木、岩石的采集
APrimalHarvest:收获实体Actor,带有血量、交互组件(UUltimateCommandComponent)与收获组件(UHarvestComponent)
变量/函数 | 说明 |
---|---|
bDestroyed | 是否已毁坏,毁坏后将无法再次进行收获 |
Health/MaxHealth | 血量/最大血量 |
SavedDamage | 储存伤害,用于储存玩家或怪物给与植物的伤害,达到最大血量*0.1f后将会清空储存的伤害并且给与按伤害类型给予物品 |
BreakSound | 破坏音效,当植物被破坏后播放该音效 |
PickupSound | 捡起音效,E键交互捡起地上物品或捡起灌木丛播放的音效 |
DestructableActorClass | 毁坏实体类型,用于被破坏后播放树木倒下或岩石消散效果的实体,该实体仅在非专用服务器上生成(客户端上生成),无碰撞,原实体将会隐藏并且移除碰撞,并不会销毁(一段时间后将会恢复,恢复代码暂时没写) |
MulticastBreak(FVector Location, FVector Direction) | 组播被销毁,随后调用OnBreak进行移除碰撞播放音效以及生成DestructableActor操作 |
MulticastOnHit(FVector Location, FVector Direction) | 组播被伤害,随后调用OnHit |
ASmallHarvest(继承APrimalHarvest):可捡起的实体Actor,例如小石子、树枝以及灌木丛
变量/函数 | 说明 |
---|---|
Meshs | 静态网格体数组,该实体将会随机使用列表中的网格体 |
OnPickup(ACharacter* Character) | 捡起物品,随后调用OnPickupInternal来给该实体应用伤害,默认一次给与10.f伤害,该函数为玩家手动交互,非使用工具进行直接伤害 |
ADestructableHarvest/ADestructable_Tree:毁坏实体,用于显示收获植物被破坏所生成的实体,仅在客户端上生成,用于装饰
变量/函数 | 说明 |
---|---|
Mesh | 静态网格体 |
ForceDirection | 力的方向,用于树木倒下时的受力方向 |
AddForce | 添加受力,已在BeginPlay中调用 |
EHarvestAdditionType:加成类型,例如斧头伤害类型拥有砍伐木头的加成,十字镐拥有铁矿加成
FHarvestAddition:加成类型结构,伤害类型(UPrimalDamageType)中使用
变量 | 说明 |
---|---|
HarvestAdditionType | 加成类型,例如加成木头、铁矿等 |
ProbabilityMultiplication | 加成几率,例如斧头将会更容易收获到木头 |
AddtionMultiplication | 加成倍率,例如斧头将会收获到更多的木头 |
FHarvestResource:收获的材料,用于收获数据列表(FTableHarvest)
变量 | 说明 |
---|---|
Resource | 材料物品基础(UPrimalItemBasic) |
Quantity | 数量 |
Probability | 几率 |
Empty | 是否为空,例如采集灌木丛有几率不给予物品 |
AdditionType | 加成类型 |
FTableHarvest:收获表格的结构,你需要创建一个表格,添加例如:灌木丛1(浆果、树枝)的材料表,每次收获将从材料表中随机获得一个材料(按几率随机)
收获组件(UHarvestComponent):组件无需联网、用于选择收获材料表格与经验、给予物品
变量/函数 | 说明 |
---|---|
HarvestResourceTable | 收获表格,结构FTableHarvest |
BaseExp | 经验值 |
bCanPickup | 可否捡起,例如小石子与灌木丛能捡起,树木与岩石无法捡起,只能使用工具或拳头给与伤害 |
GiveHarvestResource(UPrimalDamageType* DamageType,ACharacter* Character) | 给予收获材料,DamageType中包含加成数据 |
GetCanPickup | 是否可捡起 |