관리 메뉴

Mini

소켓 실습 본문

UE5

소켓 실습

Mini_96 2022. 8. 15. 23:44

소켓 => RPG게임 무기변경

 

* 구현 

1.BPCharacter::Mesh->Skeletal Mesh->Hand_l에 소켓추가 => 코드상에서 찾아서 매쉬 추가가능

여기서 붙여도 반영X, 코드에서붙여야

2.캐릭터->생성자

	//1. hand_l_socket을 찾아옴
	FName WeaponSocket(TEXT("hand_l_socket"));
	if (GetMesh()->DoesSocketExist(WeaponSocket))
	{
		//3.무기 만들어줌
		Weapon = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("WEAPON"));

		//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);
		}

		//5.웨펀소켓(hand_l_socket)에 무기붙이기
		Weapon->SetupAttachment(GetMesh(), WeaponSocket);
	}


}

 

* 무기를 땅바닥에 놓았다가 들었다가 구현 

방법 : 무기를 액터로 만듬

1.MyWeapon.cpp 생성 // 부모:액터

2.생성자->캐릭터 코드 복붙

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

	//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->SetCollisionProfileName(TEXT("NoCollision"));

3.캐릭터->include MyWeapon.h

캐릭터->비긴플레이

<AMyWeapon>을 부를때 생성자가 실행되어 매쉬가붙는것 같다..

void AMyCharacter::BeginPlay()
{
	Super::BeginPlay();

	FName WeaponSocket(TEXT("hand_l_socket"));

	//<무기>(위치,회전) 스폰하기 == 만들기
	//0,0 위치에 무기 만들어라
	auto CurrentWeapon = GetWorld()->SpawnActor<AMyWeapon>(FVector::ZeroVector, FRotator::ZeroRotator);

	//* 줍기 구현
	//널체크
	if (CurrentWeapon)
	{
		//그 무기를 hand_l_socket에 붙여라.
		CurrentWeapon->AttachToComponent(GetMesh(),
			FAttachmentTransformRules::SnapToTargetNotIncludingScale,
			WeaponSocket);
	}
}

 

'UE5' 카테고리의 다른 글

스탯 매니저  (0) 2022.08.16
아이템 줍기  (0) 2022.08.16
충돌 기초  (0) 2022.08.15
블렌드 스페이스  (0) 2022.08.14
애니메이션 노티파이  (0) 2022.08.14