void AZombie::Die()
{
// Generate loot
FLootResult LootResult = LootComponent->GenerateLoot();
// Spawn world items
for (const FLootedItem& LootedItem : LootResult.SpawnedItems)
{
FVector SpawnLocation = GetActorLocation() +
FMath::VRand() * 50.0f; // random offset
AWorldItemActor* DroppedItem = GetWorld()->SpawnActor<AWorldItemActor>(
WorldItemActorClass,
SpawnLocation,
FRotator::ZeroRotator
);
FItemInstance ItemInstance;
ItemInstance.ItemID = LootedItem.ItemData->ItemID;
ItemInstance.ItemData = LootedItem.ItemData;
ItemInstance.Quantity = LootedItem.Quantity;
ItemInstance.RarityTag = LootedItem.RolledRarity;
DroppedItem->InitializeFromInstance(ItemInstance);
}
Destroy();
}