43 - Pickup Widget

This commit is contained in:
Kingsmedia 2022-04-30 01:19:55 +02:00
parent 4bf735ec9b
commit 7acda3fe1c
6 changed files with 45 additions and 12 deletions

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,9 @@
#include "Weapon.h" #include "Weapon.h"
#include "Blaster/Character/BlasterCharacter.h"
#include "Components/SphereComponent.h" #include "Components/SphereComponent.h"
#include "Components/WidgetComponent.h"
AWeapon::AWeapon() AWeapon::AWeapon()
{ {
@ -11,7 +13,7 @@ AWeapon::AWeapon()
bReplicates = true; bReplicates = true;
WeaponMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("WeaponMesh")); WeaponMesh = CreateDefaultSubobject<USkeletalMeshComponent>(TEXT("WeaponMesh"));
WeaponMesh->SetupAttachment(RootComponent); WeaponMesh->SetupAttachment(WeaponMesh); // WeaponMesh instead?
SetRootComponent(WeaponMesh); SetRootComponent(WeaponMesh);
@ -23,6 +25,9 @@ AWeapon::AWeapon()
AreaSphere->SetupAttachment(RootComponent); AreaSphere->SetupAttachment(RootComponent);
AreaSphere->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore); AreaSphere->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
AreaSphere->SetCollisionEnabled(ECollisionEnabled::NoCollision); AreaSphere->SetCollisionEnabled(ECollisionEnabled::NoCollision);
PickupWidget = CreateDefaultSubobject<UWidgetComponent>(TEXT("PickupWidget"));
PickupWidget->SetupAttachment(RootComponent);
} }
void AWeapon::BeginPlay() void AWeapon::BeginPlay()
@ -33,7 +38,25 @@ void AWeapon::BeginPlay()
{ {
AreaSphere->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); AreaSphere->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
AreaSphere->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Overlap); AreaSphere->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Overlap);
AreaSphere->OnComponentBeginOverlap.AddDynamic(this, &AWeapon::OnSphereOverlap);
}
if (PickupWidget)
{
PickupWidget->SetVisibility(false);
} }
} }
void AWeapon::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult& SweepResult)
{
ABlasterCharacter* BlasterCharacter = Cast<ABlasterCharacter>(OtherActor);
if (BlasterCharacter && PickupWidget)
{
PickupWidget->SetVisibility(true);
}
}

View File

@ -26,8 +26,17 @@ public:
protected: protected:
virtual void BeginPlay() override; virtual void BeginPlay() override;
private: UFUNCTION()
virtual void OnSphereOverlap(
UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult& SweepResult
);
private:
UPROPERTY(VisibleAnywhere, Category="Weapon Properties") UPROPERTY(VisibleAnywhere, Category="Weapon Properties")
USkeletalMeshComponent* WeaponMesh; USkeletalMeshComponent* WeaponMesh;
@ -37,7 +46,8 @@ private:
UPROPERTY(VisibleAnywhere) UPROPERTY(VisibleAnywhere)
EWeaponState WeaponState; EWeaponState WeaponState;
UPROPERTY(VisibleAnywhere, Category="Weapon Properties")
class UWidgetComponent* PickupWidget;
public: public:
}; };