관리 메뉴

Mini

아이템 줍기 본문

UE5

아이템 줍기

Mini_96 2022. 8. 16. 10:55

* 구현

1. 줍줍할수 있는애들 MyCollective 

엔진-콜리전-새 오브젝트, 새 프로파일

캐릭터랑만 겹침판정 => 겹치면 이벤트 발생

캐릭터에서도 겹칩설정해주기

 

2. MyWeapon-> 트리거변수 => 충돌영역지정 박스

※캐릭터->줍기부분 주석처리

트리거는 UBoxComponent 타입임

AMyWeapon::AMyWeapon()
{
 	// 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;

	
	//3.무기 만들어줌
	Weapon = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WEAPON"));
	Trigger = CreateDefaultSubobject<UBoxComponent>(TEXT("TRIGGER"));

	//2.경로에가서 매쉬찾아옴, SW에 저장
	static ConstructorHelpers::FObjectFinder<UStaticMesh>SW(TEXT("StaticMesh'/Game/ParagonGreystone/FX/Meshes/Heroes/Greystone/SM_Greystone_Blade_01.SM_Greystone_Blade_01'"));
	if (SW.Succeeded())
	{
		//4. 무기에 매쉬붙여줌
		Weapon->SetStaticMesh(SW.Object);
	}
		
	Weapon->SetupAttachment(RootComponent);
	Trigger->SetupAttachment(Weapon);
    Trigger->SetBoxExtent(FVector(30.f, 30.f, 30.f));

트리거->웨펀->루트 구조로 붙여주기

충돌범위박스 설정

 

3.모든컴포넌트 초기화 이후 => (이벤트발생->함수호출)

PostInitializeComponents이후 Trigger가 오버랩되면 OnCharacterOverlap함수를 실행하라.

void AMyWeapon::PostInitializeComponents()
{
	Super::PostInitializeComponents();

	Trigger->OnComponentBeginOverlap.AddDynamic(this, &AMyWeapon::OnCharacterOverlap);
}

 

4. OnCharacterOverlap 구현

할일 : 로그찍기, 캐릭손에 칼 쥐어주기

void AMyWeapon::OnCharacterOverlap(UPrimitiveComponent* OverlappedComp, AActor* OtherActor, 
	UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
	UE_LOG(LogTemp, Log, TEXT("Overlapped"));

	//* 다이나믹 캐스트
	//캐스트시<캐릭터>가 아님-> null 리턴
	//부딪힌 Other이 AMyCharacter인지 검사
	AMyCharacter* MyCharacter = Cast<AMyCharacter>(OtherActor);
	if (MyCharacter)
	{
		//널이 아니면 줍줍 구현
		FName WeaponSocket(TEXT("hand_l_socket"));

		AttachToComponent(MyCharacter->GetMesh(),
		FAttachmentTransformRules::SnapToTargetNotIncludingScale,
		WeaponSocket);
	}
}

※다이나믹 캐스트

 

※레퍼런스 타입 

const FHitResult& SweepResult

주소X, 참조의미O

(+) : 매개변수로 많이사용됨 => 복사본X=>복사비용down => 성능up

 

 

'UE5' 카테고리의 다른 글

언리얼엔진에서 캐릭터 충돌 인식버그 해결방법  (0) 2023.09.08
스탯 매니저  (0) 2022.08.16
소켓 실습  (0) 2022.08.15
충돌 기초  (0) 2022.08.15
블렌드 스페이스  (0) 2022.08.14