Skip to content

Commit cb3007c

Browse files
committed
Added pickup functionality to 'BatteryCollectorCharacter'
1 parent 2287a9b commit cb3007c

3 files changed

Lines changed: 29 additions & 0 deletions

File tree

Config/DefaultInput.ini

17.7 KB
Binary file not shown.

Source/BatteryCollector/BatteryCollectorCharacter.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "BatteryCollector.h"
44
#include "BatteryCollectorCharacter.h"
5+
#include "Pickup.h"
56

67
//////////////////////////////////////////////////////////////////////////
78
// ABatteryCollectorCharacter
@@ -56,6 +57,8 @@ void ABatteryCollectorCharacter::SetupPlayerInputComponent(class UInputComponent
5657
InputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);
5758
InputComponent->BindAction("Jump", IE_Released, this, &ACharacter::StopJumping);
5859

60+
InputComponent->BindAction("Collect", IE_Pressed, this, &ABatteryCollectorCharacter::CollectPickups);
61+
5962
InputComponent->BindAxis("MoveForward", this, &ABatteryCollectorCharacter::MoveForward);
6063
InputComponent->BindAxis("MoveRight", this, &ABatteryCollectorCharacter::MoveRight);
6164

@@ -130,3 +133,25 @@ void ABatteryCollectorCharacter::MoveRight(float Value)
130133
AddMovementInput(Direction, Value);
131134
}
132135
}
136+
137+
void ABatteryCollectorCharacter::CollectPickups()
138+
{
139+
// Get all overlapping Actors and store them in an array
140+
TArray<AActor*> CollectedActors;
141+
CollectionSphere->GetOverlappingActors(CollectedActors);
142+
143+
// For each Actor we collected
144+
for (int32 iCollected = 0; iCollected < CollectedActors.Num(); ++iCollected)
145+
{
146+
// Cast the actor to APickup
147+
APickup* const TestPickup = Cast<APickup>(CollectedActors[iCollected]);
148+
// If the cast is successful and the pickup is valid and active
149+
if (TestPickup && !TestPickup->IsPendingKill() && TestPickup->IsActive())
150+
{
151+
// Call the pickup's WasCollected function
152+
TestPickup->WasCollected();
153+
// Deactivate the pickup
154+
TestPickup->SetActive(false);
155+
}
156+
}
157+
}

Source/BatteryCollector/BatteryCollectorCharacter.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ class ABatteryCollectorCharacter : public ACharacter
6161
virtual void SetupPlayerInputComponent(class UInputComponent* InputComponent) override;
6262
// End of APawn interface
6363

64+
/** Called when we press a key to collect any pickups inside the CollectionSphere */
65+
UFUNCTION(BlueprintCallable, Category = "Pickups")
66+
void CollectPickups();
67+
6468
public:
6569
/** Returns CameraBoom subobject **/
6670
FORCEINLINE class USpringArmComponent* GetCameraBoom() const { return CameraBoom; }

0 commit comments

Comments
 (0)