Пикап не подбирается, если боекомплект расходуется в точке респауна пикапа
Проблема
Встаем на точку респауна пикапа с полным боекомплектом
Расходуем боекомплект (достаточно одного выстрела)
Пипкап не подбирается
Решение
Создаем в базовом пикапе массив указателей на
APawn:
UPROPERTY()
TArray<APawn*> OverlappingPawns;В
NotifyActorBeginOverlapесли не получилось взять пикап — добавляем указатель на пауна в массив:
void ASTUBasePickup::NotifyActorBeginOverlap(AActor* OtherActor)
{
Super::NotifyActorBeginOverlap(OtherActor);
const auto Pawn = Cast<APawn>(OtherActor);
if (GivePickupTo(Pawn))
{
PickupWasTaken();
}
else if (Pawn)
{
OverlappingPawns.Add(Pawn);
}
}На тик (можно и кастомный таймер сделать) обходим массив, и смотрим: можем ли мы отдать кому-нибудь пикап из сохраненных паунов в массиве (то есть тем, которые в данный момент пересекают коллизию пикапа), и если можем, то отдаем.
Переопределяем функцию
NotifyActorEndOverlap(которая вызывается, как несложно догадаться, при выходе актора из коллизии) и в ней удаляем пауна из массива, то есть он покинул пикап:
Last updated
Was this helpful?