211 |
С т р а н и ц а
Вы можете редактировать корневой компонент ProxSphere в блупринтах, как
только вы создадите блупринт основанный на классе PickupItem
И наконец, функция Prox_Implementation осуществляется следующим образом:
void APickupItem::Prox_Implementation( AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep,
const FHitResult & SweepResult )
{
//
если актор, с которым произошло пересечение, НЕ является игроком,
//
вы просто должны вернуться
if( Cast
( OtherActor ) == nullptr )
{
return;
}
//
Получаем ссылку на аватар игрока, чтобы дать ему предмет
AAvatar *avatar = Cast( UGameplayStatics::GetPlayerPawn( GetWorld(), 0 ) );
//
Позволяем игроку подбирать предмет
//
Обратите на ключевое слово this!
//
Это то, как _this_ Pickup может ссылаться на само себя.
avatar->Pickup( this );
//
Получаем ссылку на контроллер
APlayerController* PController = GetWorld()- >GetFirstPlayerController();
//
Получаем ссылку на HUD из контроллера
AMyHUD* hud = Cast( PController->GetHUD() );
hud->addMessage( Message( Icon, FString("Picked up ") + FString::FromInt(Quantity) +
FString(" ") + Name, 5.f, FColor::White, FColor::Black ) );
212 |
С т р а н и ц а
Destroy();
}
Вот пара очень важных подсказок: первая, нам надо получить доступ к паре
глобальных функций, чтобы получить доступ к объекту, который нам нужен. Есть
три главных объекта, к которым у нас будет доступ через эти функции, которые
управляют HUD: контроллер (APlayerController), HUD (AMyHUD), и сам игрок
(AAvatar). Есть только один из каждого из этих типов объектов в экземпляре игры.
UE4 делает нахождение их лёгким.
Достарыңызбен бөлісу: