Пикап видим после начисления патронов

Ветка с обсуждением вопроса

Проблема

  • Подбираем пикап

  • Встаем на точку респауна пикапа

  • Расходуем весь боекомплект

  • Пикап респаунится

  • Начисление патронов происходит, но пикап остается видимым

Что происходит

Эта проблема из-за неправильного порядка вызовов в ASTUBasePickup:

CollisionComponent->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
if (GetRootComponent())
{
    GetRootComponent()->SetVisibility(true, true);
}
  • Пикап респаунится

  • Коллизия устанавливается в ECollisionResponse::ECR_Overlap

  • Вызывается NotifyActorBeginOverlap

  • Подбирается пикап и устанавливается видимость в false

  • Но после этого у нас все равно устанавливается видимость в true (строчка 4)

Решение

Просто меняем порядок вызовов:

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

Коммит в репозитории

Last updated