I am very new with C++ and Unreal Engine 4.

I am creating a pickup script with a box collider and I have an annyoning error with my pick up script. error C2248: 'UPrimitiveComponent::bGenerateOverlapEvents': cannot access private member declared in class 'UPrimitiveComponent':

I am really trying to fix this one but I cant find the fix what I need!

Here is my header code:

// 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 XAVIER_CPP_TUT_API APickup : public AActor { GENERATED_BODY() public: // Sets default values for this actor's properties APickup(); // protected: // Called when the game starts or when spawned virtual void BeginPlay() override; public: // Called every frame virtual void Tick(float DeltaSeconds) override; //********************************************* UPROPERTY(EditAnywhere) USceneComponent* PickupRoot; //The static mesh for the pick up UPROPERTY(EditAnywhere) UStaticMeshComponent* PickupMesh; UPROPERTY(EditAnywhere) UShapeComponent* PickupBox; UFUNCTION() void OnPlayerEnterPickupBox(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* otherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); }; 

Here is my .cpp code:

// Fill out your copyright notice in the Description page of Project Settings. #include "Pickup.h" #include "Classes/Components/ShapeComponent.h" #include "Classes/Components/BoxComponent.h" #include "Components/StaticMeshComponent.h" // Sets default values APickup::APickup() { // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. PrimaryActorTick.bCanEverTick = true; #pragma region Declaratie_Variabelen PickupRoot = CreateDefaultSubobject<USceneComponent>(TEXT("PickupRoot")); RootComponent = PickupRoot; PickupMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PickupMesh")); PickupMesh->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale); // * Maak een Colliderbox --> PickupBox = CreateDefaultSubobject<UBoxComponent>(TEXT("PickupBox")); PickupBox->SetWorldScale3D(FVector(1.0f, 1.0f, 1.0f)); PickupBox->bGenerateOverlapEvents = true; PickupBox->OnComponentBeginOverlap.AddDynamic(this, &APickup::OnPlayerEnterPickupBox); PickupBox->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale); // <-- Maak een Colliderbox * #pragma endregion Declaratie_Variabelen } // Called when the game starts or when spawned void APickup::BeginPlay() { Super::BeginPlay(); } // Called every frame void APickup::Tick(float DeltaTime) { Super::Tick(DeltaTime); } #pragma region Custom Functions void APickup::OnPlayerEnterPickupBox(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * otherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult) { Destroy(); } #pragma endregion Custom Functions 

1 Answer

Try PickupBox->SetGenerateOverlapEvents(true); instead of PickupBox->bGenerateOverlapEvents = true;

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.