작성 코드
.h
#pragma once
#include "CoreMinimal.h"
#include "BaseItem.h"
#include "CoinItem.generated.h"
UCLASS()
class COINGAME_API ACoinItem : public ABaseItem
{
GENERATED_BODY()
public:
ACoinItem();
protected:
// 코인 획득 시 플레이어에게 줄 점수
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Item")
int32 PointValue;
// 부모 클래스에서 상속받은 ActivateItem 함수를 오버라이드
virtual void ActivateItem(AActor* Activator) override;
};
.cpp
#include "CoinItem.h"
#include "Engine/World.h"
#include "SpartaGameState.h"
ACoinItem::ACoinItem()
{
PointValue = 0;
ItemType = "DefaultCoin";
}
void ACoinItem::ActivateItem(AActor* Activator)
{
if (Activator && Activator->ActorHasTag("Player"))
{
if (UWorld* World = GetWorld())
{
if (ASpartaGameState* GameState = World->GetGameState<ASpartaGameState>())
{
GameState->AddScore(PointValue);
GameState->OnCoinCollected();
}
}
DestroyItem();
}
}
자세한 설명
.h
.cpp