Pickup is visible after the ammo has been taken

Problem

  • Take pickup

  • Get up on the pickup respawn point

  • Spend all the ammo

  • Pickup respawns

  • Ammo is taken, but the pickup remains visible

What's happening

This happens due to the wrong execution order in ASTUBasePickup:

CollisionComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
if (GetRootComponent())
{
    GetRootComponent()->SetVisibility(true, true);
}
  • Pickup respawns

  • Collision is set to ECollisionResponse::ECR_Overlap

  • NotifyActorBeginOverlap is called

  • Pickup is taken and visibility is set to false

  • But after that, visibility is set to true (line 4)

Solution

Just change the order:

if (GetRootComponent())
{
     GetRootComponent()->SetVisibility(true, true);
}
CollisionComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);

Commit in repository

Last updated

Was this helpful?