Здравствуйте всем.
Решил осваивать C++ в Unreal, но застрял на мелочи.
Подскажите пожалуйста, что я делаю не так?
Делаю вот по этой статье
https://habr.com/post/348600/Функция OnOverlap никаким образом не выполняется.
Сейчас уже пытаюсь просто вывести лог, без какого-либо удаления.
Вот что имею в BaseCoin.h:
Код:
public:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
USceneComponent* Root;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
UStaticMeshComponent* CoinMesh;
UFUNCTION()
void OnOverlap(AActor* OverlappedActor, AActor* OtherActor);
А это в BaseCoin.cpp:
Код:
ABaseCoin::ABaseCoin()
{
// 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;
Root = CreateDefaultSubobject<USceneComponent>("Root");
RootComponent = Root;
CoinMesh = CreateDefaultSubobject<UStaticMeshComponent>("CoinMesh");
CoinMesh->SetupAttachment(Root);
CoinMesh->SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap);
RotationRate = 100;
OnActorBeginOverlap.AddDynamic(this, &ABaseCoin::OnOverlap);
}
void ABaseCoin::OnOverlap(AActor* OverlappedActor, AActor* OtherActor)
{
UE_LOG(LogTemp, Warning, TEXT("Overlap!"));
}
bGenerateOverlapEvents стоит true у CoinMesh в самом редакторе.
У мешей сетки коллизий есть, но правда не пойму, нужны ли они, в статье про это нету ничего вроде.
Я уже перепробовал разные комбинации, не пойму, что не так может быть.
И вот ещё не совсем понимаю, что за функция SetCollisionResponseToAllChannels(ECollisionResponse::ECR_Overlap)?
Может быть в этом ECR_Overlap что-то? Я должен где-то указать что-нибудь?