Add `OnComponentBeginOverlap` delegate to `AWeaponPickup`
This commit is contained in:
parent
2d48d7c703
commit
f556d1d176
|
@ -12,6 +12,9 @@ AWeaponPickup::AWeaponPickup()
|
||||||
PrimaryActorTick.bStartWithTickEnabled = true;
|
PrimaryActorTick.bStartWithTickEnabled = true;
|
||||||
|
|
||||||
SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent"));
|
SphereComponent = CreateDefaultSubobject<USphereComponent>(TEXT("SphereComponent"));
|
||||||
|
SphereComponent->SetSphereRadius(25.0f, true);
|
||||||
|
SphereComponent->SetCollisionEnabled(ECollisionEnabled::QueryAndProbe);
|
||||||
|
|
||||||
SphereComponent->SetupAttachment(RootComponent);
|
SphereComponent->SetupAttachment(RootComponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,15 +25,14 @@ void AWeaponPickup::BeginPlay()
|
||||||
|
|
||||||
FActorSpawnParameters SpawnParameters;
|
FActorSpawnParameters SpawnParameters;
|
||||||
SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
|
SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
|
||||||
|
|
||||||
WeaponComponent = GetWorld()->SpawnActor<AWeapon>(Weapon, SpawnParameters);
|
WeaponComponent = GetWorld()->SpawnActor<AWeapon>(Weapon, SpawnParameters);
|
||||||
|
|
||||||
FAttachmentTransformRules TransformRules = FAttachmentTransformRules(EAttachmentRule::SnapToTarget, EAttachmentRule::SnapToTarget, EAttachmentRule::SnapToTarget, true);
|
FAttachmentTransformRules TransformRules = FAttachmentTransformRules(EAttachmentRule::SnapToTarget, EAttachmentRule::SnapToTarget, EAttachmentRule::SnapToTarget, true);
|
||||||
WeaponComponent->AttachToComponent(RootComponent, TransformRules);
|
WeaponComponent->AttachToComponent(RootComponent, TransformRules);
|
||||||
WeaponComponent->SetActorRelativeLocation(FVector(0.0f, 0.0f, 5.0f));
|
WeaponComponent->SetActorRelativeLocation(FVector(0.0f, 0.0f, 5.0f));
|
||||||
WeaponComponent->SetActorEnableCollision(false);
|
WeaponComponent->SetActorEnableCollision(false);
|
||||||
|
|
||||||
WeaponStartingLocation = WeaponComponent->GetActorLocation();
|
WeaponStartingLocation = WeaponComponent->GetActorLocation();
|
||||||
|
|
||||||
|
SphereComponent->OnComponentBeginOverlap.AddDynamic(this, &AWeaponPickup::OnOverlapBegin);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called every frame
|
// Called every frame
|
||||||
|
@ -47,3 +49,11 @@ void AWeaponPickup::Tick(float DeltaTime)
|
||||||
WeaponComponent->SetActorLocation(WeaponStartingLocation + (MovementDirection * Sine));
|
WeaponComponent->SetActorLocation(WeaponStartingLocation + (MovementDirection * Sine));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AWeaponPickup::OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
|
||||||
|
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
|
||||||
|
{
|
||||||
|
// TODO: Add weapon to player inventory
|
||||||
|
this->Destroy();
|
||||||
|
WeaponComponent->Destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,10 +32,13 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
USphereComponent* SphereComponent;
|
USphereComponent* SphereComponent;
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
AWeapon* WeaponComponent;
|
AWeapon* WeaponComponent;
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
FVector WeaponStartingLocation;
|
FVector WeaponStartingLocation;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -50,4 +53,7 @@ public:
|
||||||
// Called every frame
|
// Called every frame
|
||||||
virtual void Tick(float DeltaTime) override;
|
virtual void Tick(float DeltaTime) override;
|
||||||
|
|
||||||
|
UFUNCTION()
|
||||||
|
void OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue