> For the complete documentation index, see [llms.txt](https://lifeexe-art.gitbook.io/unreal-engine-c-course/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lifeexe-art.gitbook.io/unreal-engine-c-course/dopolneniya-k-urokam/lekciya-079/pikap-vidim-posle-nachisleniya-patronov.md).

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

[Ветка с обсуждением вопроса](https://www.udemy.com/course/unrealengine/learn/#questions/16017660/)

### Проблема

* Подбираем пикап
* Встаем на точку респауна пикапа
* Расходуем весь боекомплект
* Пикап респаунится
* Начисление патронов происходит, но пикап остается видимым

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

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

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

* Пикап респаунится
* Коллизия устанавливается в `ECollisionResponse::ECR_Overlap`
* Вызывается `NotifyActorBeginOverlap`
* Подбирается пикап и устанавливается видимость в `false`
* Но после этого у нас все равно устанавливается видимость в `true` **(строчка 4)**

### Решение

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

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

[Коммит в репозитории](https://github.com/life-exe/UnrealEngine/commit/e4954956c152d31b82d6357892de228002ac2866)
