목차
- 보물 클래스 만들기
1. 보물 클래스 만들기
아이템에 사용할 매시와 사운드를 구한뒤 이를 바탕으로 보물 클래스를 만들어보자.
아이템 클래스를 기반으로 보물 클래스를 만들 것이다.
// item.h
UFUNCTION()
virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
클래스가 만들어졌으면 부모 클래스(아이템 클래스)에서 오버랩 이벤트 함수를 오버라이드 해서 사용해보자.
UCLASS()
class PRACTICE_API ATreasure : public AItem
{
GENERATED_BODY()
protected:
virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) override;
};
이제 이 함수를 정의할 것이다.
함수의 내용에는 아이템을 습득하면 코인(돈)을 늘려주고 습득 사운드를 재생할 것이다. 물론 현재 캐릭터 클래스에 코인 변수는 없으므로 추가해주어야 한다.
사운드를 재생하기 위해서 보물 클래스에 사운드를 담을 포인터를 추가해주자.
private:
UPROPERTY(EditAnywhere, Category = "Sounds")
USoundBase* PickupSound;
이제 사운드를 재생하는 일을 정의해보자.
void ATreasure::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
AKnight* KnightCharacter = Cast<AKnight>(OtherActor);
if (KnightCharacter)
{
if (PickupSound)
{
UGameplayStatics::PlaySoundAtLocation(this, PickupSound, GetActorLocation());
}
Destroy();
}
}
보물과 캐릭터가 오버랩 되면 사운드가 재생되고 보물은 파괴된다.
이제 컴파일 하고 블루프린트 클래스로 만들어 이를 확인하면 된다.
이렇게 해서 보물을 만들기 위한 기반을 닦았다. 이제 다음에는 항아리를 부시면 보물이 나오는 등의 작업을 해보려고 한다.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 42. 다양한 보물이 나오게 하기. (0) | 2024.11.01 |
---|---|
[언리얼 실습] 41. C++에서 액터 스폰하기 & 부서진 액터랑 충돌방지 (0) | 2024.10.31 |
[언리얼 실습] 39. 액터가 부셔질 때 효과음을 내고 사라지게 하기 (0) | 2024.10.31 |
[언리얼 실습] 38. C++와 블루프린트에서 설정가능한 함수 만들기 (0) | 2024.10.31 |
[언리얼 실습] 37. 파괴가능한 액터 (0) | 2024.10.31 |