153 - Pickup Class

This commit is contained in:
Kingsmedia 2022-05-22 17:04:10 +02:00
parent 4227a898d4
commit 3fae6c46d7
3 changed files with 107 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,64 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "Pickup.h"
#include "Components/SphereComponent.h"
#include "Kismet/GameplayStatics.h"
#include "Sound/SoundCue.h"
APickup::APickup()
{
PrimaryActorTick.bCanEverTick = true;
bReplicates = true;
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
OverlapSphere = CreateDefaultSubobject<USphereComponent>(TEXT("OverlapSphere"));
OverlapSphere->SetupAttachment(RootComponent);
OverlapSphere->SetSphereRadius(150.f);
OverlapSphere->SetCollisionEnabled(ECollisionEnabled::QueryOnly);
OverlapSphere->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Ignore);
OverlapSphere->SetCollisionResponseToChannel(ECollisionChannel::ECC_Pawn, ECollisionResponse::ECR_Overlap);
PickupMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PickupMesh"));
PickupMesh->SetupAttachment(OverlapSphere);
PickupMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}
void APickup::BeginPlay()
{
Super::BeginPlay();
if (HasAuthority())
{
OverlapSphere->OnComponentBeginOverlap.AddDynamic(this, &APickup::OnSphereOverlap);
}
}
void APickup::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex,
bool bFromSweep, const FHitResult& SweepResult)
{
}
void APickup::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
void APickup::Destroyed()
{
Super::Destroyed();
if (PickupSound)
{
UGameplayStatics::PlaySoundAtLocation(
this,
PickupSound,
GetActorLocation()
);
}
}

View File

@ -0,0 +1,43 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"
UCLASS()
class BLASTER_API APickup : public AActor
{
GENERATED_BODY()
public:
APickup();
virtual void Tick(float DeltaTime) override;
virtual void Destroyed() override;
protected:
virtual void BeginPlay() override;
UFUNCTION()
virtual void OnSphereOverlap(
UPrimitiveComponent* OverlappedComponent,
AActor* OtherActor,
UPrimitiveComponent* OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult& SweepResult
);
private:
UPROPERTY(EditAnywhere)
class USphereComponent* OverlapSphere;
UPROPERTY(EditAnywhere)
class USoundCue* PickupSound;
UPROPERTY(EditAnywhere)
UStaticMeshComponent* PickupMesh;
public:
};